2013-01-06 76 views
5

我遇到一些问题,实体框架和SQL数据库。 所以我的问题是这样的: 我的数据库中存在具有相同属性的两个表,他们是在类型和长度相同,但他们没有任何关系。没有任何外键。 只要我开始与数据库实体框架交互吐出了著名的错误:实体框架4.1两个表具有相同的属性名称

error 0019: Each property name in a type must be unique. Property name was already defined.

我使用的方式代码优先的方法。

这是表的级图示之一:

[Table("bo")] 
public class TbPBO 
{ 
    [Required(AllowEmptyStrings = false, ErrorMessage = "O campo de nome nao pode ser nulo")] 
    [MaxLength(55, ErrorMessage = "O campo de nome nao pode ter mais que 55 caracteres")] 
    [Column("nome", TypeName = "char", Order = 4)] 
    public string TbBonome { get; set; } 
} 

这是表的其他类表示:

[Table("bi")] 
public class TbPBi 
{ 
    [Required(AllowEmptyStrings = false, ErrorMessage = "O campo nome nao pode ser nulo")] 
    [MaxLength(55, ErrorMessage = "O campo nome nao pode ter mais que 55 caracteres")] 
    [Column("nome", TypeName = "char", Order = 62)] 
    public string TbBinome { get; set; } 
} 

我已经尝试过使用这种改变我的背景,但没有任何运气。

public class PHCDbContext:DbContext 
{ 
    public PHCDbContext(string connection):base(connection) 
    { 

     Database.SetInitializer<PHCDbContext>(null); 
    } 
    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
     modelBuilder.Entity<TbPBO>() 
      .Map(mbo => { mbo.Properties(tnome => new { tnome.TbBonome }); mbo.ToTable("bo"); }); 

     modelBuilder.Entity<TbPBi>() 
      .Map(mbo => { mbo.Properties(tnome => new { tnome.TbBinome }); mbo.ToTable("bi"); }); 

    } 
} 

如何解决这个任何想法?还有一件事。数据库不得以任何方式改变。我无法修改它。

帮助将不胜感激。 由于事先

+1

请问类'TbPBO'(或'TbPBi')都称为属性'nome'?它会与映射到列名'nome'的其他属性发生冲突。另外:你使用的是什么数据库系统? SQL Server或MySql或...? – Slauma

+0

抱歉。我正在使用SQL Server 2008,并且这两个类都有一个名为nome的属性。就像数据库上相应的表bi和bo一样。他们都有一个名为Nome的字段。并且表格bo中的字段nome中的数据在表格bi中相同。 – jonniebigodes

+0

但是,为什么你那么属性映射'TbBonome'到列'nome'当你的类已经有一个属性'nome'? – Slauma

回答

0

很多谷歌上搜索和反复试验后。我发现了电动工具,安装它并让它反向工程我的数据库。我让这个过程运行。它映射表。创建了类和上下文。并为我一直在测试的问题解决了。 感谢您的帮助

相关问题