2012-08-09 58 views
0

我得到了一個實體與另一個鏈接:如何創建實體通過LINQ嵌套到SQL

[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中創建鏈接實體?

回答

0

請嘗試指定AssociationAttributeOtherKey屬性。如果未指定,則默認爲相關類的密鑰,但在您的情況下,不同類中的密鑰名稱不同(UserId vs Id)。

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