LINQ to SQL和不变性

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的异常,也没有没有参数的默认构造函数.

Mar*_*ell 3

您可以在没有此构造函数的情况下创建类型,并且只需使用选择器即可投影到它们中。由于您显然没有使用更新等,因此它们不属于生成模型并不重要:

from cust in db.Customers
     ...
     select new ImmutableCust(
         cust.Id, cust.Name, ...);
Run Code Online (Sandbox Code Playgroud)

(其中 ImmutableCust 不是 L2S 模型的一部分)