2012-01-08 86 views
2

我有一些关于如何在企业应用程序中使用实体框架的问题。如何在企业应用程序中使用实体框架

首先,我使用ADO.NET很多年了,我使用对象来反映我从数据库提供者获得的数据。每当我想要改变某些东西或将某些东西插入到数据库中。

我只是调用Save()方法并完成工作。每个对象都有一个DatabaseManager,用于管理对DataAccess层的查询。 例如

public class Article{ 
    public int ID{get;set;} 
    public string Title{get;set;} 
    ..... 
    public bool Save(){ 
     if(this.ID == -1){ 
      return new ArticleDatabaseManager().InsertArticle(this); 
     }else{ 
      return new ArticleDatabaseManager().UpdateArticle(this); 
     } 
    } 
} 
public ArticleDatabaseManager : DatabaseManager 
{ 
    ...ADO.NET code 
} 

我不知道我是否必须使用同一architectur或更改所有我使用这个对象在我的应用程序的方式。

我想如果我创建像上面我可以做这样的事情:

public class Article{ 
    public int ID{get;set;} 
    public string Title{get;set;} 
    ..... 
    public bool Save(){ 
     if(this.ID == -1){ 
      return new ArticleDatabaseManager().InsertArticle(this); 
     }else{ 
      return new ArticleDatabaseManager().UpdateArticle(this); 
     } 
    } 
} 

在每个的DatabaseManager实现了一些链接的实体甚至EntitySQL做像老的DatabaseManager做相同的工作。 用来自实体对象的值填充业务模型。 然后,我可以像以前一样与业务合作,只要任何时候我想通过EntityFramework与数据库进行通信来做一些更改。

Sould我执行类似上面的东西?

我可以继承以前的业务对象到实体对象吗? EX: 公共类文章:ArticleEntity {// 一些属性进行验证等 }

高度重视和我使用完全不同的东西? 我只是不知道:/

我没有与其他ORM的经验。我的手写了“ORM”系统。

非常感谢你。 我很抱歉我缺乏英语,我知道我在单个问题中询问太多...... 但是,从一种技术转移到另一种像我这样的恐龙就像我改变国家:/

+1

你应该只在每篇文章中提出一个问题。将“这是数据库...”部分移到另一个问题。 – 2012-01-08 19:16:55

+0

我很抱歉,但我认为这个问题来自实体框架导航。我删除它。 :) – Sanosay 2012-01-08 19:22:55

回答

5

你是否至少尝试使用EF教程?如果不是这样的话,是时候这样做了,因为我们无法在单一答案中解释有关EF的所有内容(即使是多重答案 - 这也不是用来取代教程和学习资料的目的)。这应该给你关于你所有与你的数据库管理器相关的东西的明确答案。

一般而言,您所做的事情直到知道与活动记录模式非常接近。如果你的对象也有用于从数据库检索对象的静态方法,它就是活动记录模式。使用EF时,通常不使用此模式,并且不需要任何数据库管理器。 EF围绕称为上下文的类构建,并且此上下文作为您正在使用的所有实体的数据库管理器。可以向实体添加保存和检索方法,但因为它打破了关注点的分离,并且它使得您的实体严重依赖于EF和持久性(趋势是使它们完全独立= POCO),所以通常不会使用它。

不要从实体派生任何自定义类。EF将无法使用您的派生类型。使用在EF中映射的实体作为您的类,并将所有自定义属性和方法直接添加到此类(如果您不想使用代码生成器,您甚至可以从头开始创建该类)。在生成实体的情况下,您可以在部分类中添加自定义代码。如果你不使用EF实体作为你的对象,你将不得不手动处理从一个到另一个的转换(或使用像AutoMapper这样的工具)。

EF无法使用XML列 - 它会将其作为字符串处理。特别是如果您打算将这些数据用于某些排序或过滤,并且如果它们具有固定结构,则应将它们建模为单独的表/实体。如果它实际上只是结构化内容(具有动态结构),则可以将其用作XML字符串。

+0

是的,我已阅读有关该框架的EF教程和书籍。 但我有很多困惑。这就是为什么我在这里问。 尽管事实上你起初很讽刺,但你给了我一个非常好的答案。 谢谢你:) – Sanosay 2012-01-08 19:42:21

+0

http://code.msdn.microsoft.com/ASPNET-MVC-Application-b01a9fe8/sourcecode?fileId=25232&pathId=1337828505 这是EntityFramework的“正确”使用,因为我看到它使用DAL。 谢谢 – Sanosay 2012-01-09 20:37:10

相关问题