2013-01-06 21 views
5

Tôi đang gặp một số vấn đề với khung thực thể và cơ sở dữ liệu sql. vì vậy vấn đề của tôi là: trong cơ sở dữ liệu của tôi có hai bảng có cùng thuộc tính, chúng giống hệt nhau về kiểu và độ dài nhưng chúng không liên quan theo bất kỳ cách nào. không có chìa khóa nước ngoài nào. ngay sau khi tôi bắt đầu để tương tác với các khuôn khổ cơ sở dữ liệu thực thể spits ra lỗi nổi tiếng:khung thực thể 4.1 hai bảng có cùng tên thuộc tính

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

Tôi đang sử dụng mã tiếp cận đầu tiên bằng cách này.

này là một trong những cơ quan đại diện lớp của bảng:

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

đây là đại diện lớp khác của bảng:

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

tôi đã cố gắng thay đổi bối cảnh của tôi bằng cách sử dụng này, nhưng không may mắn.

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

    } 
} 

bất kỳ ý tưởng nào về cách giải quyết vấn đề này? một điều nữa. cơ sở dữ liệu không được thay đổi theo bất kỳ cách nào. tôi không thể sửa đổi nó.

trợ giúp sẽ được đánh giá cao. cảm ơn trước

+1

Lớp 'TbPBO' (hay' TbPBi') có thuộc tính được gọi là 'nome' không? Nó sẽ xung đột với các thuộc tính khác được ánh xạ tới tên cột 'nome'. Ngoài ra: Bạn đang sử dụng hệ thống cơ sở dữ liệu nào? SQL Server hoặc MySql hoặc ...? – Slauma

+0

xin lỗi về điều đó. Tôi đang sử dụng máy chủ sql 2008. và cả hai lớp đều có thuộc tính được gọi là nome. như trên bảng bi và bo tương ứng trên cơ sở dữ liệu. cả hai đều có một lĩnh vực tên là nome. và dữ liệu trong lĩnh vực nome trong bảng bo là giống nhau trong bảng bi. – jonniebigodes

+0

Nhưng tại sao bạn ánh xạ thuộc tính 'TbBonome' vào cột' nome' khi lớp của bạn đã có thuộc tính 'nome'? – Slauma

Trả lời

0

sau nhiều lần googling và dùng thử và lỗi. tôi phát hiện ra các công cụ điện tử, cài đặt nó và để cho nó đảo ngược kỹ sư cơ sở dữ liệu của tôi. tôi để cho quá trình chạy. nó ánh xạ các bảng. tạo ra các lớp và ngữ cảnh. và cho những gì tôi đã thử nghiệm vấn đề được giải quyết. cảm ơn sự giúp đỡ