gpt4 book ai didi

c# - 如何从 Linq-To-Sql 映射中排除成员?

转载 作者:可可西里 更新时间:2023-11-01 08:26:32 26 4
gpt4 key购买 nike

我有这门课:

public class MyClass {
[Column(Name="StoredColumn", DbType="int")]
public int Stored;

public int ForDisplay {
get { return Stored * 1000; }
}
}

重点是 ForDisplay 不会存储在数据库中 - 我只是需要它来获得更方便的代码。

我尝试运行一个返回行集的 SQL 查询并得到这个 InvalidOperationException:

Cannot assign value to member 'ForDisplay '. It does not define a setter.

我不希望 Linq-To-Sql 触及 ForDisplay。如何告诉 Ling-To-Sql 不要碰它?

最佳答案

您不需要告诉 Linq to Sql 它不应该触及“ForDisplay”属性。通常,所有未特别标记为 Column 属性的属性都被视为应用程序逻辑的临时部分,不会持久化或从数据库中检索。

但是,如果您想通过存储过程从数据库中检索一些记录,例如 GetMyClasses,那么设计者将创建一个新类 GetMyClassesResult。如果您查看生成的代码,您会注意到该类没有使用 Table 属性进行修饰。在这种情况下,映射器假定必须分配每个 属性。如果查询中存在没有对应值的属性,则映射器将尝试将该属性设置为默认值(T),但由于没有 setter ,将抛出异常。

无论如何,长话短说,只需添加

[Table]
public class MyClass
{
...
}

您的类(class)应该可以解决这个问题。

关于c# - 如何从 Linq-To-Sql 映射中排除成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8412430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com