sha*_*oth 12 .net c# linq linq-to-sql
我有这门课:
public class MyClass {
[Column(Name="StoredColumn", DbType="int")]
public int Stored;
public int ForDisplay {
get { return Stored * 1000; }
}
}
Run Code Online (Sandbox Code Playgroud)
关键是ForDisplay不要存储在数据库中 - 我只是需要它来获得更方便的代码.
我尝试运行一个返回行集的SQL查询并获取InvalidOperationException:
无法为成员'ForDisplay'指定值.它没有定义一个setter.
我不想ForDisplay被Linq-To-Sql所感动.怎么告诉Ling-To-Sql不接触它?
你不需要告诉Linq它不应该触及"ForDisplay"属性.通常,未使用该Column属性专门标记的所有属性都将被视为应用程序逻辑的临时部分,并且不会保留或从数据库中检索.
但是,如果您想通过存储过程从数据库中检索某些记录GetMyClasses,那么设计人员将创建一个新类GetMyClassesResult.如果查看生成的代码,则会注意到该类未使用该Table属性进行修饰.在这种情况下,映射器假定必须分配每个属性.如果查询中存在没有相应值的属性,则映射器将尝试将该属性设置为default(T),但由于没有setter,因此将抛出异常.
无论如何,简而言之,只需添加
[Table]
public class MyClass
{
...
}
Run Code Online (Sandbox Code Playgroud)
你的班级应该解决这个问题.