C#、LINQ、SQL : Compound columns

标签 c# sql-server linq-to-sql

我有一个 LINQ 实体,我需要为其创建一个特殊的字符串值。它是由“-”分隔的 7 个不同的值。使用的一些字段在该表中,而其中一些在不同的表中。我想以某种方式将这个字段添加到实体中,这样我就不必在每次需要时都自己创建这个字符串。

我在想我可以用这样的部分类将它添加到实体中:

    public string SpecialField
    {
        get
        {
            return string.Format("{0}-{1}-{2}-{3}-{4}-{5}-{6}",
                                 TableId,
                                 Number,
                                 ForeignTableA.Date,
                                 ForeignTableB.Name,
                                 ForeignTableC.ForeignTableD.Name,
                                 ForeignTableB.ForeignTableE.Name,
                                 ForeignTableB.Number ?? 0);
        }
    }

然而,在写完之后,我开始有点不确定它是如何工作的。原因,除非我弄错了,否则每次为每个项目使用该值时都会导致数据库查询。例如,在 Where 子句中使用该字段是否有效?

我需要在 Where 子句中使用该字段,我希望它发生在服务器上,这样我就不会获取超出我需要的数据。

你最好怎么做?

最佳答案

您可以在数据库中为此创建一个 View 。这样 SQL Server 会处理它,您可以更有效地查询它

关于C#、LINQ、SQL : Compound columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1453506/

相关文章:

c# - 尝试让 main/form1 以外的类相互交互是不是一种不好的形式?

c# - Java和C#传值区别

sql-server - SQL Server 索引重叠

c# - 为什么使用两个 ManualResetEvents 会导致死锁?

c# - 为什么 Microsoft Visual Studio 2013 在加载非常大的 C++ 和 C# 解决方案时会意外重启?

javascript - sql查询结果显示来自javascript的问号

sql-server - 错误 0xc0202049 : Data Flow Task 1: Failure inserting into the read-only column

c# - LINQ to SQL 预加载条件

sql-server - 使用 dbml 将数据库值映射到 TimeSpan

c# - Linq 复杂搜索导致 NullReferenceException