首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架和业务对象

实体框架和业务对象
EN

Stack Overflow用户
提问于 2011-03-05 17:04:03
回答 4查看 6.5K关注 0票数 10

我以前从来没有使用过实体框架,我想尝试一些实现它的个人项目,以了解我的脚。

我看到实体可以向表示层公开。但我不希望暴露某些字段,如修改日期和创建日期等字段以及各种其他数据库字段。

如何实现业务对象并只公开所需的属性,同时仍然保持对象的可序列化?

另外,与LinqToSql相比,这有什么优势?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-05 17:21:32

在EDMX模型中定义实体时,可以指定每个属性的setter和getter的可见性,因此,如果不希望ModifiedDate在其他层中可见,只需将其指定为内部。

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

票数 22
EN

Stack Overflow用户

发布于 2011-03-06 06:43:37

我个人在实体上使用包装器类,并公开或隐藏我需要的东西。

代码语言:javascript
运行
复制
// 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; }
}
票数 3
EN

Stack Overflow用户

发布于 2011-03-05 17:12:29

您只需将所需的属性绑定到表示层,这可以通过声明、业务逻辑层(具有自己的对象抽象层)或ViewModel来完成。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5202780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档