假设我编写了一个Customer类,它具有Name,Age,names等属性。我还有一个表也是具有相同属性的客户。
现在我不想使用为我生成实体类的设计器。
使用LINQ to SQL作为OR / M时,是否可以将Customer.cs映射到表客户。
答案 0 :(得分:2)
您将很难做到这一点,因为您的类不会拥有L2S类必须管理FK关系,更改,数据源附件等的所有内部管道。
OTOH,我们做了类似的事情。在我们的L2S应用程序中,我们拥有所谓的“应用程序实体”,它们是我们自己的实体(并且更轻量级),并且我们拥有L2S生成的实体(具有所有内部L2S管道)。在我们的后端,应用程序实体映射到相应的L2S实体以进行数据操作。对我们来说非常好。兰迪
答案 1 :(得分:0)
是的,实际上是。您可以在实例化DataContext时提供映射文件,如下所示:
var dataContext = new DataContext("connectionstring", entity.map);
可以使用SqlMetal.exe自动生成此文件:
sqlmetal /server:servername /database:databasename /context:nameofdatacontext /Map:Entity.Map /code:Entity.code
因此,如果您坚持使用约定来命名db和i中的属性相同,那么您将会运行。
此外,您还可以使用T4模板生成datacontext,同时生成dbml文件。
我创建了一个.bat文件,我使用powershell.exe从解决方案资源管理器执行,
但如果您不希望缺少像lazyload这样的正常功能,那么您应该在实体中使用EntitySet<T>
和EntityRef<T>
。这显然意味着你不会有干净的POCO,但是如果你能接受它,那么这是一个相当小的权衡。