2013-01-06 23 views
5

Mam pewne problemy z encjami encji i bazą danych sql. , więc mój problem jest następujący: w mojej bazie danych znajdują się dwie tabele, które mają tę samą właściwość, są identyczne pod względem typu i długości, ale nie są w żaden sposób powiązane. bez żadnego klucza obcego. jak tylko zacząć współdziałać z Entity Framework w bazie wypluwa słynny błąd:framework entity 4.1 dwie tabele o tej samej nazwie właściwości

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

używam kodu pierwsze podejście na drodze.

ten jest jednym z przedstawień klasa tabelach:

[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; } 
} 

to inna klasa reprezentacja tabeli:

[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; } 
} 

Próbowałem modyfikowanie mojego kontekstu za pomocą tego, ale bez szczęścia.

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"); }); 

    } 
} 

Jakiś pomysł na obejście tego problemu? jeszcze jedna rzecz. baza danych nie może być w żaden sposób zmieniana. Nie mogę go zmodyfikować.

pomoc byłaby doceniana. z góry dzięki

+1

Czy klasa 'TbPBO' (lub' TbPBi') ma właściwość o nazwie 'nome'? Byłoby to w konflikcie z innymi właściwościami odwzorowanymi na nazwę kolumny 'nome'. Ponadto: Z jakiego systemu baz danych korzystasz? SQL Server lub MySql lub ...? – Slauma

+0

Przepraszam za to. używam serwera sql 2008. Obie klasy mają właściwość o nazwie nome. jak na odpowiednich tabelach bi i bo w bazie danych. obaj mają pole o nazwie nome. a dane znajdujące się w polu nome w tabeli bo są takie same w tabeli bi. – jonniebigodes

+0

Ale dlaczego mapujesz następnie właściwość 'TbBonome' na kolumnę' nome', kiedy twoja klasa ma już właściwość 'nome'? – Slauma

Odpowiedz

0

po wielu googlach i próbach i błędach. odkryłem narzędzia elektronarzędzi, zainstalowałem je i pozwoliłem na odwrotną inżynierię mojej bazy danych. pozwoliłem procesowi działać. mapował tabele. stworzył klasy i kontekst. i dla tego, co testowałem, problem został rozwiązany. dzięki za pomoc