Nao*_*aor 1 .net entity-framework business-objects poco entity-framework-4
我愿意将实体框架集成为我的数据层.
我使用本教程跟踪文章并生成了poco实体:http://blogs.msdn.com/b/adonet/archive/2010/01/25/walkthrough-poco-template-for-the-entity-framework.aspx
我有自己的业务对象.这是我的业务对象Brach:
public class Branch
{
public long BranchId { get; private set; }
public string BranchName { get; set; }
public string BranchCode { get; set; }
public Branch() { }
public void InsertBranch(Guid companyId)
{
using (var ctx = new Entities.Entities())
{
var branch = new T_STF_BRANCH() //This is generated POCO object
{
company_id = companyId,
branch_name = BranchName,
branch_code = BranchCode
};
ctx.T_STF_BRANCH.AddObject(branch);
ctx.SaveChanges();
}
}
public static IList<Branch> GetBranchesList(Guid companyId, long? branchId,
string branchName)
{
using (var ctx = new Entities.Entities())
{
var branchs = ctx.T_STF_BRANCH.Where(x =>
x.is_deleted == false &&
(branchId == null || x.branch_id == branchId) &&
(branchName == null || x.branch_name.Contains(branchName))).ToList();
}
//HERE I NEED SOMEHOW CONVERT THE POCO ENTITIES INTO MY BUSINESS ENTITIES...
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何将POCO实体转换为我的业务实体.
我应该在哪里将POCO转换为POCO?
Lad*_*nka 10
恕我直言这太复杂了.为什么你有POCO实体用于持久性和单独的对象来处理加载到POCO实体的数据?听起来你的应用程序已经过结构化了.
ORM表示对象关系映射.它意味着关系世界和对象世界之间的映射.通常它也可以转换为数据库和业务对象之间的映射.因此,您应该将POCO对象用作业务对象.这就是使用POCO的全部含义.如果您不想将它们用作业务对象,则不需要它们,您可以直接使用默认实体对象.
如果要将POCO用作业务对象,只需让EF为您生成这些POCO,并为定义方法的每个POCO添加部分类.
顺便说一句.您的业务对象实际上看起来像Active Record模式的实现.如果您想使用这种模式,也许您应该检查基于NHibernate顶部的Windsor Active Record.
编辑:
好.您可以使用类而不是生成的POCO实体.
一种方法是放弃EFv4和EDMX并检查新的EFv4.1及其新的流畅API(也称代码优先)以进行映射.这对于单独的问题是完整的,或者只是在SO上使用搜索.
你也可以用EDMX做到这一点.您必须遵循一些基本规则来完成这项工作,因为整个过程是通过命名约定来完成的.因为您已经有类,所以必须在EDMX文件中修改它,以便概念模型与业务对象相同:
EDMX由三层组成:
这些是基本规则,但由于您已经拥有业务对象,因此您很可能会发现难以映射它的情况.最好的方法就是要求提出具体问题.它很可能是关于一些复杂的属性,导航属性或继承.
| 归档时间: |
|
| 查看次数: |
5174 次 |
| 最近记录: |