2013-01-06 75 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

很多谷歌上搜索和反覆試驗後。我發現了電動工具,安裝它並讓它反向工程我的數據庫。我讓這個過程運行。它映射表。創建了類和上下文。併爲我一直在測試的問題解決了。 感謝您的幫助

相關問題