2013-01-06 20 views
5

Ben varlık çerçevesi ve bir sql veritabanı ile bazı sorunlar yaşıyorum. bu yüzden benim sorunum: benim veritabanımda aynı özelliği olan iki tablo vardır, bunlar tür ve uzunluk bakımından aynıdır ancak hiçbir şekilde ilişkili değildir. yabancı anahtar yok. i bu arada kod birinci yaklaşımı kullanıyorumvarlık çerçevesi 4.1 aynı özellik adıyla iki tablo

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

: kısa sürede i veritabanı varlık çerçevesi ile etkileşim başlamak gibi ünlü hatayı tükürür.

bu tabloların sınıf tasvirlerinden biridir:

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

Bu tablonun diğer sınıf temsilidir:

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

ben bu kullanarak benim bağlamı değiştirerek denedim ama şanssız

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

    } 
} 

Bu konuyla ilgili herhangi bir fikrin var mı? bir şey daha. veritabanı hiçbir şekilde değiştirilmemelidir. onu değiştiremem.

yardımı memnuniyetle karşılanacaktır.

+1

'TbPBO' (veya' TbPBi') sınıfı nome' adlı bir özelliğe sahip mi? 'Nome' sütun adına eşlenen diğer özelliklerle çakışır. Ayrıca: Hangi veritabanı sistemini kullanıyorsunuz? SQL Server veya MySql veya ...? – Slauma

+0

Bunun için üzgünüz. sql server 2008 kullanıyorum ve her iki sınıf da nome adında bir özelliğe sahip. Veritabanındaki ilgili tablolar bi ve bo üzerinde olduğu gibi. her ikisinin de nome adlı bir alanı var. ve tablo n'deki alan nomundaki veriler, tablo biindeki aynıdır. – jonniebigodes

+0

Ancak, sınıfınız zaten bir 'nome' özelliğine sahip olduğunda niçin 'TbBonome' özelliğini 'nome' sütunuyla eşleştiriyorsunuz? OnModelCreating üzerinde yazan – Slauma

cevap

0

, teşekkürler, deneme ve deneme yanılmalarından sonra. ef güç araçlarını keşfettim, yükledim ve veritabanımı tersine çevirmesine izin verdim. Sürecin çalışmasına izin verdim. tabloları eşleştirdi. sınıfları ve bağlamı yarattı. ve problemi test ettiğim için çözüldü. Yardım için teşekkürler