0

あるエンティティを別のエンティティにリンクしました:

[Table(Name = "Employees")]
public sealed class Employee
{
    [Column(Name = "Id", UpdateCheck = UpdateCheck.Never, IsPrimaryKey = true, IsDbGenerated = true, DbType = "Int NOT NULL IDENTITY")]
    public int Id { get; set; }

    [Column(Name = "Phone", UpdateCheck = UpdateCheck.Never, DbType = "Char(20)")]
    public string Phone { get; set; }

    [Column(Name = "UserId", UpdateCheck = UpdateCheck.Never, DbType = "Int NOT NULL")]
    public int UserId { get; set; }

    [Association(Storage = "_user", ThisKey = "UserId")]
    public User User
    {
        get { return _user.Entity; }
        set { _user.Entity = value; }
    }
    private EntityRef<User> _user;
}

[Table(Name = "Users")]
public sealed class User
{
    [Column(Name = "Id", UpdateCheck = UpdateCheck.Never, IsPrimaryKey = true, IsDbGenerated = true, DbType = "Int NOT NULL IDENTITY")]
    public int Id { get; set; }

    [Column(Name = "LastName", UpdateCheck = UpdateCheck.Never, DbType = "NVarChar(100)")]
    public string LastName { get; set; }

    [Column(Name = "FirstName", UpdateCheck = UpdateCheck.Never, DbType = "NVarChar(100)")]
    public string FirstName { get; set; }
}

次に、従業員を作成します。

var entity = new Employee
{
Phone = "Some",
User = new User
{
    FirstName = "Some", 
    LastName = "Some" 
}
};

context.GetTable<Employee>().InsertOnSubmit(entity);
context.SubmitChanges();

そしてこれを得ました: INSERT ステートメントは FOREIGN KEY 制約「FK_Employees_Users」と競合しました

LINQ to SQL でリンクされたエンティティを作成することは可能ですか?

4

1 に答える 1

0

OtherKeyのプロパティも指定してみてくださいAssociationAttribute。指定されていない場合、デフォルトで関連するクラスのキーになりますが、あなたの場合、異なるクラスのキーの名前は異なります ( UserIdvs Id)。

[Association(Storage = "_user", ThisKey = "UserId", OtherKey="Id")]
public User User
{
    get { return _user.Entity; }
    set { _user.Entity = value; }
}
private EntityRef<User> _user;
于 2012-08-09T12:59:36.957 に答える