【问题标题】:entity framework 4.1 two tables with the same property name实体框架 4.1 两个属性名相同的表
【发布时间】:2012-12-20 13:07:52
【问题描述】:

我在实体框架和 sql 数据库方面遇到了一些问题。 所以我的问题是: 在我的数据库中,有两个表具有相同的属性,它们的类型和长度相同,但它们没有任何关系。没有任何外键。 一旦我开始与数据库实体框架交互,就会吐出著名的错误:

错误 0019:类型中的每个属性名称都必须是唯一的。属性名称已定义。

顺便说一句,我使用的是代码优先方法。

这是表的类表示之一:

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

    }
}

关于如何解决这个问题的任何想法?还有一件事。不得以任何方式更改数据库。我不能修改它。

我们将不胜感激。 提前谢谢

【问题讨论】:

  • TbPBO(或TbPBi)是否有一个名为nome的属性?它会与映射到列名nome 的其他属性冲突。另外:您使用的是什么数据库系统? SQL Server 或 MySql 或 ...?
  • 对此感到抱歉。我正在使用 sql server 2008。这两个类都有一个名为 nome 的属性。与数据库上相应的表 bi 和 bo 一样。它们都有一个名为 nome 的字段。并且表 bo 中的字段名中的数据与表 bi 中的数据相同。
  • 但是当你的类已经有一个属性nome 时,为什么还要将属性TbBonome 映射到列nome
  • 你在 onModelCreating 上说的是什么?如果是这样,这是一个测试,看看是否会创建一个解决方法。但事实并非如此。尽管在函数中使用了那段代码或没有任何代码,但它不起作用。我仍然收到错误消息。
  • 您的类中是否使用了任何继承?

标签: c# entity-framework ef-code-first wcf-data-services


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多