Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架模型中的BaseEntity优先_C#_Entity Framework - Fatal编程技术网

C# 实体框架模型中的BaseEntity优先

C# 实体框架模型中的BaseEntity优先,c#,entity-framework,C#,Entity Framework,首先,我对EF模型有一个小问题。我希望有一个通用实体不映射到任何数据库表。只有一个属性Int Id的实体。所有其他实体都应从此属性Int Id派生。(由于有了这个基类,我将能够创建非常通用的存储库) 我已经拥有了除该基之外的所有实体(到目前为止,每个实体都有自己的密钥属性) 当我尝试添加BaseEntity时,出现错误: Problem in mapping fragments starting at line 614:Must specify mapping for all key prope

首先,我对EF模型有一个小问题。我希望有一个通用实体不映射到任何数据库表。只有一个属性Int Id的实体。所有其他实体都应从此属性Int Id派生。(由于有了这个基类,我将能够创建非常通用的存储库)

我已经拥有了除该基之外的所有实体(到目前为止,每个实体都有自己的密钥属性)

当我尝试添加BaseEntity时,出现错误:

Problem in mapping fragments starting at line 614:Must specify mapping for all key properties (BaseEntities.Id) of the EntitySet BaseEntities.
...\DataAccess\Model.edmx
无论BaseEntity是否设置为抽象

从该实体派生的任何其他实体再次出现相同的错误。 在代码优先中,这将非常简单,但我不知道如何使用Model First以一种好的方式完成它


我做错了什么?

尝试使用FluentAPI覆盖此行为:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<MyBaseClass>();
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
Ignore();
}

这种方法也可能适用于您:

尝试使用FluentAPI覆盖此行为:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<MyBaseClass>();
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
Ignore();
}

这种方法也可能适用于您:

尝试使用FluentAPI覆盖此行为:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<MyBaseClass>();
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
Ignore();
}

这种方法也可能适用于您:

尝试使用FluentAPI覆盖此行为:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<MyBaseClass>();
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
Ignore();
}

这种方法也可能适用于您:

您可以在OnModelCreating方法中忽略它:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<BaseEntity>();
}

您可以在OnModelCreating方法中忽略它:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<BaseEntity>();
}

您可以在OnModelCreating方法中忽略它:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<BaseEntity>();
}

您可以在OnModelCreating方法中忽略它:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Ignore<BaseEntity>();
}

我相信你想要的是每个层次的表。可以找到实现它的教程

简而言之,在设计器中,需要执行以下步骤:

  • 将BaseEntity设置为Abstract==true
  • 将相关项设置为Abstract==false,并将其基类型设置为BaseEntity

我相信您需要的是每个层次结构的表。可以找到实现它的教程

简而言之,在设计器中,需要执行以下步骤:

  • 将BaseEntity设置为Abstract==true
  • 将相关项设置为Abstract==false,并将其基类型设置为BaseEntity

我相信您需要的是每个层次结构的表。可以找到实现它的教程

简而言之,在设计器中,需要执行以下步骤:

  • 将BaseEntity设置为Abstract==true
  • 将相关项设置为Abstract==false,并将其基类型设置为BaseEntity

我相信您需要的是每个层次结构的表。可以找到实现它的教程

简而言之,在设计器中,需要执行以下步骤:

  • 将BaseEntity设置为Abstract==true
  • 将相关项设置为Abstract==false,并将其基类型设置为BaseEntity

    • 我用自己的方式做得很好。我修改了Model.tt并更改了2个函数

      public string EntityClassOpening(EntityType entity)
          {
              return string.Format(
                  CultureInfo.InvariantCulture,
                  "{0} {1}partial class {2}{3}",
                  Accessibility.ForType(entity),
                  _code.SpaceAfter(_code.AbstractOption(entity)),
                  _code.Escape(entity),
                  _code.StringBefore(" : ", "BaseEntity"));
      
       public string Property(EdmProperty edmProperty)
          {
              if (edmProperty.Name != "Id")
              {
                  return string.Format(
                      CultureInfo.InvariantCulture,
                      "{0} {1} {2} {{ {3}get; {4}set; }}",
                      Accessibility.ForProperty(edmProperty),
                      _typeMapper.GetTypeName(edmProperty.TypeUsage),
                      _code.Escape(edmProperty),
                      _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
                      _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
              }
              else
              {
                  return String.Empty;
              }
          }
      

      我用我自己的方式做了。我修改了Model.tt并更改了2个函数

      public string EntityClassOpening(EntityType entity)
          {
              return string.Format(
                  CultureInfo.InvariantCulture,
                  "{0} {1}partial class {2}{3}",
                  Accessibility.ForType(entity),
                  _code.SpaceAfter(_code.AbstractOption(entity)),
                  _code.Escape(entity),
                  _code.StringBefore(" : ", "BaseEntity"));
      
       public string Property(EdmProperty edmProperty)
          {
              if (edmProperty.Name != "Id")
              {
                  return string.Format(
                      CultureInfo.InvariantCulture,
                      "{0} {1} {2} {{ {3}get; {4}set; }}",
                      Accessibility.ForProperty(edmProperty),
                      _typeMapper.GetTypeName(edmProperty.TypeUsage),
                      _code.Escape(edmProperty),
                      _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
                      _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
              }
              else
              {
                  return String.Empty;
              }
          }
      

      我用我自己的方式做了。我修改了Model.tt并更改了2个函数

      public string EntityClassOpening(EntityType entity)
          {
              return string.Format(
                  CultureInfo.InvariantCulture,
                  "{0} {1}partial class {2}{3}",
                  Accessibility.ForType(entity),
                  _code.SpaceAfter(_code.AbstractOption(entity)),
                  _code.Escape(entity),
                  _code.StringBefore(" : ", "BaseEntity"));
      
       public string Property(EdmProperty edmProperty)
          {
              if (edmProperty.Name != "Id")
              {
                  return string.Format(
                      CultureInfo.InvariantCulture,
                      "{0} {1} {2} {{ {3}get; {4}set; }}",
                      Accessibility.ForProperty(edmProperty),
                      _typeMapper.GetTypeName(edmProperty.TypeUsage),
                      _code.Escape(edmProperty),
                      _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
                      _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
              }
              else
              {
                  return String.Empty;
              }
          }
      

      我用我自己的方式做了。我修改了Model.tt并更改了2个函数

      public string EntityClassOpening(EntityType entity)
          {
              return string.Format(
                  CultureInfo.InvariantCulture,
                  "{0} {1}partial class {2}{3}",
                  Accessibility.ForType(entity),
                  _code.SpaceAfter(_code.AbstractOption(entity)),
                  _code.Escape(entity),
                  _code.StringBefore(" : ", "BaseEntity"));
      
       public string Property(EdmProperty edmProperty)
          {
              if (edmProperty.Name != "Id")
              {
                  return string.Format(
                      CultureInfo.InvariantCulture,
                      "{0} {1} {2} {{ {3}get; {4}set; }}",
                      Accessibility.ForProperty(edmProperty),
                      _typeMapper.GetTypeName(edmProperty.TypeUsage),
                      _code.Escape(edmProperty),
                      _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
                      _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
              }
              else
              {
                  return String.Empty;
              }
          }
      

      FluentApi更倾向于代码优先(至少这是我想的)我应该把代码放在哪里?FluentApi更倾向于代码优先(至少这是我想的)我应该把代码放在哪里?FluentApi更倾向于代码优先(至少这是我想的)我应该把代码放在哪里?FluentApi更倾向于代码优先(至少我是这么想的)我应该把这段代码放在哪里?但是我使用了EDMX,所以从来没有调用过OnModelCreating。我想我需要使用T4模板做一点工作。但是我使用了EDMX,所以从来没有调用过OnModelCreating。我想我需要使用T4模板做一点工作。但是我使用了EDMX,所以从来没有调用过OnModelCreating。我想我需要使用T4模板做一点工作。但是我使用了EDMX所以从来没有调用过ModelCreating。我想我需要使用T4模板。