使用 Entity-Framework 的外键问题
A problem with the foreign key using Entity-Framework
我正在使用 Entity Framework 并且有这两个 类:
[Table("Client")]
public class Client
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ClientCode { get; set; }
public string Nombre { get; set; }
}
[Table("Product")]
public class Product
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string CodProd { get; set; }
[StringLength(80)]
public string NameProd { get; set;
public Client Client { get; set; };
}
然后我像这样实例化一个新产品:
Product prod = new Product
{
CodProd = "Code",
NameProd = "Name",
Client = new Client { ClientCode = 12345678 }
};
db.Products.Add(prod);
db.SaveChanges();
当我添加和保存这个对象时,并没有将它记录在数据库中,但是如果我在客户端属性中使用一个 NULL 值来实例化该产品,确实会出现,但具有该 NULL 值。
我不知道为什么会这样...
假设您在 Client
和 Product
之间有一对多关系,您的代码应该如下所示:
[Table("Client")]
public class Client
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ClientCode { get; set; }
public string Nombre { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
[Table("Product")]
public class Product
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string CodProd { get; set; }
[StringLength(80)]
public string NameProd
{
get; set;
}
[ForeignKey("Client")]
public long ClientCode { get; set; } //foreign key property
public virtual Client Client { get; set; } //navigation property
}
然后
Product prod = new Product
{
CodProd = "Code",
NameProd = "Name",
ClientCode = 12345678
};
db.Products.Add(prod);
我正在使用 Entity Framework 并且有这两个 类:
[Table("Client")]
public class Client
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ClientCode { get; set; }
public string Nombre { get; set; }
}
[Table("Product")]
public class Product
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string CodProd { get; set; }
[StringLength(80)]
public string NameProd { get; set;
public Client Client { get; set; };
}
然后我像这样实例化一个新产品:
Product prod = new Product
{
CodProd = "Code",
NameProd = "Name",
Client = new Client { ClientCode = 12345678 }
};
db.Products.Add(prod);
db.SaveChanges();
当我添加和保存这个对象时,并没有将它记录在数据库中,但是如果我在客户端属性中使用一个 NULL 值来实例化该产品,确实会出现,但具有该 NULL 值。 我不知道为什么会这样...
假设您在 Client
和 Product
之间有一对多关系,您的代码应该如下所示:
[Table("Client")]
public class Client
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ClientCode { get; set; }
public string Nombre { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
[Table("Product")]
public class Product
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string CodProd { get; set; }
[StringLength(80)]
public string NameProd
{
get; set;
}
[ForeignKey("Client")]
public long ClientCode { get; set; } //foreign key property
public virtual Client Client { get; set; } //navigation property
}
然后
Product prod = new Product
{
CodProd = "Code",
NameProd = "Name",
ClientCode = 12345678
};
db.Products.Add(prod);