C# 如何在企业应用中使用实体框架

C# 如何在企业应用中使用实体框架,c#,asp.net,entity-framework,database-design,ado.net,C#,Asp.net,Entity Framework,Database Design,Ado.net,我有一些关于如何在企业应用程序中使用实体框架的问题 首先,我使用ADO.NET已经很多年了,我使用对象来反映我从数据库提供程序获得的数据。 每次我想更改某些内容或将某些内容插入数据库时 我只需调用Save()方法就可以完成这项工作。 每个对象都有一个DatabaseManager,用于管理对DataAccess层的查询。 比如说 public class Article{ public int ID{get;set;} public string Title{get;set;}

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

首先,我使用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
}

我不知道我是否必须使用相同的架构,或者改变我在应用程序中使用这些对象的所有方式

我想,如果我创造了类似于上述的东西,我可以做如下事情:

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与数据库通信

我应该实现类似上面的东西吗

我应该只将以前的业务对象继承到实体对象吗

例:

我应该使用完全不同的东西吗? 我只是不知道:/

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

多谢各位。 我很抱歉我英语不好,我知道我一个问题问得太多了。。。
但对于像我这样的恐龙来说,从一种技术转移到另一种技术就像我改变了国家://

你至少试过使用一些EF教程吗?如果不是的话,是时候这样做了,因为我们无法用一个答案(甚至是多个答案)向您解释关于EF的所有内容——这并不是为了取代教程和学习材料。这将为您提供与数据库管理器相关的所有内容的清晰答案

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

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


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

您应该在每篇文章中只问一个问题。将“这是数据库…”部分移到另一个问题。很抱歉,我认为这个问题来自实体框架导航。我把它拿走了。:)是的,我读过EF教程和有关框架的书籍。但是我很困惑。这就是我在这里问的原因。尽管一开始你很讽刺,但你给了我一个很好的回答。非常感谢:)这是EntityFramework的“正确”用法,因为我看到它使用了DAL。非常感谢。
  public class Article : ArticleEntity
  {
     //some properties for validation etc 
  }