私は基本エンティティクラスMyCompany.Core.Model.User
User
エンティティの共通のプロパティのために使用すべきである:タイプ 'Company.Model.User'とタイプ 'Company.Core.Model.User'は同じ単純名 'User'を持ち、同じモデルでは使用できません
public class User
{
public string Username { get; set; }
public string Usercode { get; set; }
}
Iもセットアップするために基地User
クラスのコード最初のマッピングのベース・マッピング・クラスMyCompany.Core.Model.UserMap
を有する:別で
public class UserMap<TUser> : EntityMapBase<TUser>
where TUser : User
{
public UserMap()
{
// Primary Key
this.HasKey(t => t.Usercode);
// Table & Column Mappings
this.ToTable("Users");
this.Property(t => t.Username).HasColumnName("Username");
this.Property(t => t.Usercode).HasColumnName("UserCode");
}
}
を私は派生クラスを持っていますまた
public class User : Core.User
{
public string Surname { get; set; }
}
をIは、追加プロパティの追加の設定を提供するために、派生マッピングクラスMyCompany.Model.UserMap
を有する:
public class UserMap : Core.UserMap<User>
{
public UserMap()
{
this.Property(t => t.Surname).HasColumnName("Surname");
}
}
しかし基地User
クラスから継承し、いくつかの追加の特性を有することを拡張コンテキストにMyCompany.Model.User
を追加してMyCompany.Model.UserMap
を登録すると、次のエラーが表示されます。
'MyCompany.Model.User'タイプと 'MyCompany.Core.Model.User'タイプは同じ単純名 'User'を持ち、同じモデルでは使用できません。特定のモデルのすべての型は、一意の単純な名前を持たなければなりません。モデルからプロパティまたはタイプを明示的に除外するには、「NotMappedAttribute」を使用するか、Code First Fluent APIでIgnoreを呼び出します。
このlinkは、モデルで同じ「シンプルな名前」を2回使用できないことを示します。
なぜ基本クラス「シンプルネーム」がモデルに登録されているのですか?この種のエンティティ継承を実装するためには、方法がありますか?
簡単な解決策は、派生クラスの名前を変更することだと思われます。しかし、私は複数の文脈で多くの派生があるかもしれないので、これを避けることを好むでしょう。
注:Entity Frameworkのに6.0.0-RC1を使用した(プレリリース)
同じことを戦っているIm。あなたは解決策に到着しましたか? –
@JasonCragun残念ながら、私はちょうどUserBaseにベースクラスの名前を変更することに行きました。 –