2

私は単純なユーザーテーブルを持っています:

CREATE TABLE User
 (
UserId int,
UserName nvarchar(35),
Password nvarchar(size),
 );

これを EF6 で 2 つのエンティティに分割したいと考えています。ユーザーとユーザーパスワード。これらは 2 つの非常に異なるビジネス ニーズを表していますが、たまたま同じテーブルに存在します。

そこで、2 つのエンティティを作成します。

public class User
{
 public int Id { get; set; }
 public string Username { get; set; }
}

public class UserPassword
{
 public int Id { get; set; }
 public string Password{ get; set; }
}

私はそのような地図を持っています

class UserMap : EntityTypeConfiguration<User>
{
    public UserMap()
    {
        Property(p => p.Id).HasColumnName("UserId");
    }
}

class PasswordMap : EntityTypeConfiguration<UserPassword>
{
    public PasswordMap()
    {
        ToTable("User");
        Property(p => p.Id).HasColumnName("UserId");
    }
}

しかし、これらのエンティティを使用すると、次のエラーが発生します。

Message = "エンティティ タイプ 'UserPassword' と 'User' はテーブル 'User' を共有できません。これらは同じタイプ階層にないか、それらの間で主キーが一致する有効な 1 対 1 の外部キー関係を持たないためです。"

関係を作りたくない。階層ごとにテーブルを設定するのに問題があります。私は差別者を望んでいません。私は本当に、目立たない同じテーブルに到達するための2つの別々の方法が必要です. 2 つのコンテキストを作成する以外にこれを行う方法はありますか?

4

1 に答える 1

1

ああ。私のコメントによると、更新可能なビューを作成した場合、UserPasswordそれをエンティティのテーブルとして使用できます。EF は、更新が実際に users テーブルを更新していることを認識したり気にしたりしません。

于 2015-06-05T13:08:38.133 に答える