LINQ to SQL和不变性 [英] LINQ to SQL and immutability

查看:190
本文介绍了LINQ to SQL和不变性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我tryign使用LINQ到SQL。 Everythign的伟大工程,但它似乎并不友好的不可变对象。

I'm tryign to use LINQ to SQL. Everythign works great but it seems that it is not friendly to immutable objects.

LINQ to SQL的要求我创造我的不可变类参数的构造函数。但我想这是不变的,所以我只想让人们的所有需要​​的参数,每次创建它。

LINQ to SQL requires me to create a parameterless constructor for my immutable class. But I want it to be immutable, so I want to only allow people to create it with all the required parameters each time.

同样,我需要对我的所有成员的setter方法。

Likewise I need to have setters on all of my members.

有没有办法,我还是可以的?使用LINQ 2 SQL不会放弃自己的不变性

Is there a way that I can still use LINQ 2 SQL without giving up my immutability?

下面是我的代码:

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



这将引发约没有setter和不带参数没有默认构造函数的异常。

It will throw exceptions about no setter and no default constructor with no parameters.

推荐答案

您可以创建类型的没有的构造函数这个和的simpy使用选择项目放进去。既然你显然没有使用更新等,应该没有关系,他们是不是生成模型的一部分:

You can create types without this ctor, and simpy use the selector to project into them. Since you obviously aren't using updates etc it shouldn't matter that they aren't part of the generate model:

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

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

(where ImmutableCust isn't part of the L2S model)

这篇关于LINQ to SQL和不变性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆