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; }
}