无法先使用实体框架代码将其他指定列设置为表的主键,而不是Id列
本文关键字:设置 Id 实体 框架 其他 代码 | 更新日期: 2023-09-27 18:20:57
我有两张表Product
和Order
public class Product
{
string name;
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid productId { get; set; } // i want this to be primary key instead default Id
}
public class Order
{
string name;
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public Guid orderId { get; set; } // i want this to be primary key instead default Id and also want to add productId inside this table as foreign key
}
我使用了以下代码来首先使用代码。
DatabaseContext.cs
class DatabaseContext : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Order> Orders { get; set; }
}
程序.cs
static void Main(string[] args)
{
Database.SetInitializer(new DropCreateDatabaseAlways<DatabaseContext>());
using (var context = new DatabaseContext())
{
context.Product.Add(new Product() { Name = "mytest" });
context.SaveChanges();
}
Console.WriteLine("Database Created!!!");
Console.ReadKey();
}
获取异常
Additional information: Unable to determine composite primary key ordering for type '.Customer'. Use the ColumnAttribute (see http://go.microsoft.com/fwlink/?LinkId=386388) or the HasKey method (see http://go.microsoft.com/fwlink/?LinkId=386387) to specify an order for composite primary keys.
EF只支持属性,因此您应该将字段更改为属性。当您这样做时,使用{类名}+Id作为属性名称,它将按照约定作为键属性。或者,您可以在属性上使用[Key]
属性,让EF知道它应该是关键属性。你可以在这里找到更多关于EF属性的信息。