LINQ to SQL和不变性

我尝试使用LINQ to SQL。 Everythign工作得很好但似乎对不可变对象不友好。

LINQ to SQL要求我为不可变类创建一个无参数构造函数。 但我希望它是不可变的,所以我想只允许人们每次都使用所有必需的参数创建它。

同样,我需要在我的所有成员上安装。

有没有办法让我仍然可以使用LINQ 2 SQL而不放弃我的不变性?

这是我的代码:

DataContext db = new DataContext("myconnectistring"); Table myImmutableObjects = db.GetTable(); 

它会抛出没有setter的exception,也没有没有参数的默认构造函数。

你可以在没有这个ctor的情况下创建类型,并且简单地使用选择器投影到它们中。 由于您显然没有使用更新等,因此它们不属于生成模型并不重要:

 from cust in db.Customers ... select new ImmutableCust( cust.Id, cust.Name, ...); 

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