我从来没有使用实体框架之前,我想尝试一些个人项目实施它让我的脚湿。实体框架和业务对象
我看到实体可以暴露于表示层。 但我不希望暴露某些字段,像修改日期和创建日期和各种其他数据库字段的字段。
我怎么能实现业务对象,只是公开我需要的属性,但仍然保持对象的序列化?
这对LinqToSql有什么好处?
我从来没有使用实体框架之前,我想尝试一些个人项目实施它让我的脚湿。实体框架和业务对象
我看到实体可以暴露于表示层。 但我不希望暴露某些字段,像修改日期和创建日期和各种其他数据库字段的字段。
我怎么能实现业务对象,只是公开我需要的属性,但仍然保持对象的序列化?
这对LinqToSql有什么好处?
当您在EDMX模型中定义实体时,您可以指定每个属性的setter和getter的可见性,因此如果您不希望ModifiedDate在其他图层中可见,则可以简单地将其指定为内部。
如果您的需求比较复杂,如ModifiedDate应在装配实体和业务逻辑组件,而不是在UI组件访问,那么你需要创建一个将在之间进行交换的另一个对象业务逻辑和UI逻辑层。
你只绑定你想表现层的属性,这可以通过声明来完成,业务逻辑层(与它自己的对象的抽象水平)或你的ViewModel。
怎么样一个小的代码示例? – 2011-03-05 18:36:29
是的。我很想看到这个小例子。 – BastanteCaro 2011-03-05 23:08:03
个人使用包装类超过实体和暴露或影子我需要什么。
// 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; }
}
这听起来像我在找什么。这可以很容易地序列化? – BastanteCaro 2011-03-05 23:06:54
是的,只需将您的'BLL'类标记为'serializable'并遵循规则即可。我一会儿想着这个解决方案,这对我很有用。我更喜欢这样做,因为您可以在独立项目中声明它,并且不要为实体项目添加任何“部分类”(在我的情况下,两个不同的团队正在处理每个项目)。关于这个解决方案有一些技巧,例如创建两个构造函数,一个参数较少,另一个接受一个实体对象...... – Xaqron 2011-03-06 02:43:12
// this is your edmx
Asset5Entities conx = new Asset5Entities();
//认为这是一个新的接触对象列表是数据库中的表 使用实体框架该数据库表映射到一个对象u到处理//
List$gt;Contact$lt; s = new List$gt;Contact$lt;();
//使用LINQ大u的现在可以选择或乌尔数据库查询过的任何表和U //访问列在表例子(电子邮件)这里
var result = from q in conx.Contacts select q.Email;
//而非
string sqlcommand = "select email from Contacts";
Contact con = new Contact();
con.Email= "[email protected]";
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
小代码示例如何? – 2011-03-05 18:37:54
@Robert:你期望什么样的样品? – 2011-03-05 18:47:06
你如何指定每个属性的getter和setter的可见性? – 2011-03-05 22:00:36