2

我有数据库与不同的主ID名称...雇员,客户ID等我试图建立一个通用的存储库,UOW,想知道是否有反正第一实体,而不改变数据库,告诉UoW数据库中的每个主要id,即employeeid等,都会被称为id?数据库第一个ID,雇员被称为ID

感谢

我想我的问题是不明确的,所以我会尝试什么,我需要做的例子。谢谢你的耐心。

我有3个表,客户,订单和ORDERDETAILS, 客户表中有一个主键字段客户ID。 订单表具有主键字段订单ID 订单细节表具有主键字段orderdetailsid。

我有3个实体,从EDMX产生,代表每个表。

我有一个通用的存储库和工作单位监视保存更改。我想通用的方式来说,customerid主键将被称为id,orderid主键也被称为id,最后orderdetailsid也将被称为id。

我相信使用通用的可以让我创建将返回主键的接口。

public interface IEntity { 
    int Id { get; } 
} 

我相信我可以通过我在设计的所有实体,并更改主键的名称不会影响数据库,但是这将是真正的耗时时,有可能会在应用程序中这样做的方式。

感谢

+0

你需要做什么?我问,因为我可以想象一些情景,可以有替代方法来实现它们。 – 2013-03-24 19:03:31

+0

我想创建一个存储库,我不必担心ID名称。 – 2013-03-25 00:33:32

+0

如果添加,则不需要Id,也可以使用['AddOrUpdate'](http://msdn.microsoft.com/zh-cn/library/hh846520%28v=vs.103%29.aspx )如果你使用DbContext。 – 2013-03-25 10:38:32

回答

0

以我的经验,以实现这种类型映射的唯一方法是使用模型生成器来设置或者通过流畅的配置列名或使用您的模型

数据注解API设置列名

即数据注释

[Column("EmployeeId")] 
public int ID { get; set; } 

或流利 在上下文类

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 

    modelBuilder.Entity<Person>().Property(e=>e.Id).HasColumnName("EmployeeId"); 

    base.OnModelCreating(modelBuilder); 
} 

但这需要你不使用EDMX或写一个继承的DbContext来定制你的,你可能还需要寻找到实体框架,电动工具,以消除设计师的依赖,同时保持你的abiliy快速生成实体类这将让你的类更加个性尽可能映射你的实体

在后一种情况下的另一种选择,你可以写一个DbConvention,将自定义的映射,以及这篇文章提供了编写自定义数据库约定实体框架的一些例子http://msdn.microsoft.com/en-us/data/jj819164.aspx