使用普通的Entity类使用LINQ to SQL映射到表?

时间:2010-02-11 12:25:53

标签: linq linq-to-sql

假设我编写了一个Customer类,它具有Name,Age,names等属性。我还有一个表也是具有相同属性的客户。

现在我不想使用为我生成实体类的设计器。

使用LINQ to SQL作为OR / M时,是否可以将Customer.cs映射到表客户。

2 个答案:

答案 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从解决方案资源管理器执行,

  • 使用map参数
  • 运行sqlmetal.exe
  • 使用dbml参数运行sqlmetal.exe
  • 并在生成我的datacontex的T4模板上运行TextTransform.exe。

但如果您不希望缺少像lazyload这样的正常功能,那么您应该在实体中使用EntitySet<T>EntityRef<T>。这显然意味着你不会有干净的POCO,但是如果你能接受它,那么这是一个相当小的权衡。