Entity framework 实体框架代码优先方法-表查询

Entity framework 实体框架代码优先方法-表查询,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,在代码优先的方法中 如何保持标识列不包含标识种子(无自动递增) 我的实体如下: public class Product { public int Id { get; set; } ... } 还有,这里怎么做外键?我想为下面的对象添加外键。 我必须在上述产品类别中添加哪些属性 public class ProductType { public int id { get; set; } .... } 谢谢通过,默认设置为 如果主键属性的类型是数字或GUID,则

在代码优先的方法中

如何保持标识列不包含标识种子(无自动递增)

我的实体如下:

public class Product
{
   public int Id { get; set; }

   ...

}
还有,这里怎么做外键?我想为下面的对象添加外键。 我必须在上述产品类别中添加哪些属性

public class ProductType
{

   public int id { get; set; }
   ....

}
谢谢

通过,默认设置为

如果主键属性的类型是数字或GUID,则它将是 配置为标识列

您可以通过提供
DatabaseGenerated
属性并将其设置为
DatabaseGeneratedOption.None
来更改它

要使外键从
产品
产品类型
只需在
产品类型
类上提供以下集合,它将根据约定自动发现,EF将在
产品
表中生成外键列
产品类型

public ICollection<Product> Products { get; set; }
下面是这些类的完整代码

public class Product
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }
    public int ProductTypeId { get; set; }
    public ProductType ProductType { get; set; }
}
public class ProductType
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }
    public ICollection<Product> Products { get; set; }
}
公共类产品
{
[数据库生成(DatabaseGeneratedOption.None)]
公共int Id{get;set;}
public int ProductTypeId{get;set;}
公共ProductType ProductType{get;set;}
}
公共类ProductType
{
[数据库生成(DatabaseGeneratedOption.None)]
公共int Id{get;set;}
公共ICollection产品{get;set;}
}

那么,它是否像-要将FK添加到ProductType表中,我必须将
ICollection
添加到
ProductType
表中,并且不需要将任何属性添加到
Product
表中?另一件事:将
ProductTypeId
Producttype
字段添加到
Product
类中是出于什么原因。。哪个关系?@user3711357,1。对2.无论是否有
ProductTypeId
ProductType
属性,
Products
都将有FK列指向
ProductTypes
,这两个属性都在应用程序中使用,因此您可以从产品实例轻松访问
ProductType
。好的,谢谢您提供的详细信息,只需最后一次查询,在Products中,为什么我们要保留两个属性-
ProductTypeId
ProductType
。我的意思是,这两个属性都将被创建到表?@user3711357中,它们都只是导航,从产品实例,我们可以通过
product.ProductType
访问
ProductType
,从ProductType实例,我们可以通过
ProductType.products
访问它下面的所有产品,如果不需要以这种方式访问,则不必同时添加这两个属性,因为只有
产品
集合才足以在数据库中创建引用完整性。
public class Product
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }
    public int ProductTypeId { get; set; }
    public ProductType ProductType { get; set; }
}
public class ProductType
{
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }
    public ICollection<Product> Products { get; set; }
}