entity framework和业务对象

我从来没有使用entity framework,我想尝试一些个人项目实施它,让我的脚湿。

我看到实体可以暴露于表示层。 但我不希望某些字段暴露,像修改date和创builddate和各种其他数据库字段的字段。

我怎么能实现业务对象,只公开我需要的属性,但仍然保持对象的序列化?

这对LinqToSql有什么好处?

当您在EDMX模型中定义一个实体时,您可以指定每个属性的setter和getter的可见性,所以如果您不希望ModifiedDate在其他图层中可见,则可以简单地将其指定为内部。

在这里输入图像描述

如果您的需求比较复杂,像ModifiedDate应该可以在实体程序集和业务逻辑程序集中访问,而不是在UI程序集中,那么您需要创build另一个将在业务逻辑层和UI逻辑层之间交换的对象。

我如何开始使用entity framework?

入门(entity framework)

entity framework教程

个人使用包装类超过实体和暴露或影子我需要什么。

// instead of below property in your BLL: private int m_someVariable; public int SomeVariable { get { return m_someVariable; } set { m_someVariable = value; } } // You can use the entity object: private readonly EntityClass _entityObject = new EntityClass(); public int SomeVariable { get { return _entityObject.SomeVariable; } set { _entityObject.SomeVariable = value; } } // or make it read-only at your BLL public int SomeVariable { get { return entityObject.SomeVariable; } // set { entityObject.SomeVariable = value; } } 

您只需绑定您想要的表示层的属性,这可以通过声明,业务逻辑层(具有它自己的对象抽象级别)或您的ViewModel完成。

  // this is your edmx Asset5Entities conx = new Asset5Entities(); 

/ /认为这是一个新的联系对象列表是数据库中的表/ /使用entity framework这个数据库表映射到一个对象为你来处理

  List$gt;Contact$lt; s = new List$gt;Contact$lt;(); 

//使用LINQ的一个大ü现在可以select或查询您的数据库中的任何表,你有//访问该表中的列示例(电子邮件)在这里

  var result = from q in conx.Contacts select q.Email; 

// 而不是

  string sqlcommand = "select email from Contacts"; Contact con = new Contact(); con.Email= "xxxx@gmail.com"; con.FirstName="nader"; //etc etc... conx.Contacts.AddObject(con); //rather than " insert into Contact values ......................" //having your queries within ur c# code rather than strings that are not parsed //for errors but on runtime was alot helpful for me