wcf*_*ded 5 c# linq immutability
我尝试使用LINQ to SQL.Everythign工作得很好但似乎它对不可变对象不友好.
LINQ to SQL要求我为不可变类创建一个无参数构造函数.但是我希望它是不可变的,所以我想只允许人们每次都使用所有必需的参数创建它.
同样,我需要在我的所有成员上安装.
有没有办法让我仍然可以使用LINQ 2 SQL而不放弃我的不变性?
这是我的代码:
DataContext db = new DataContext("myconnectistring");
Table<MyImmutableType> myImmutableObjects = db.GetTable<MyImmutableType>();
Run Code Online (Sandbox Code Playgroud)
它会抛出没有setter的异常,也没有没有参数的默认构造函数.
您可以在没有此构造函数的情况下创建类型,并且只需使用选择器即可投影到它们中。由于您显然没有使用更新等,因此它们不属于生成模型并不重要:
from cust in db.Customers
...
select new ImmutableCust(
cust.Id, cust.Name, ...);
Run Code Online (Sandbox Code Playgroud)
(其中 ImmutableCust 不是 L2S 模型的一部分)