Entity framework 4 创建模型时指定FK会导致;引用约束中的从属属性映射到存储生成的列;
我有此代码和以下EF模型:Entity framework 4 创建模型时指定FK会导致;引用约束中的从属属性映射到存储生成的列;,entity-framework-4,Entity Framework 4,我有此代码和以下EF模型: var modelToAdd = new Package { PackageID = model.LearningPackageID, // not auto-generated PK! Name = model.Name, Description = model.Description,
var modelToAdd = new Package
{
PackageID = model.LearningPackageID, // not auto-generated PK!
Name = model.Name,
Description = model.Description,
DateCreated = DateTime.Now,
ModuleID = model.ModuleID
};
activityRepo.AddPackage(modelToAdd);
这也不行
var modelToAdd = new Pacakge
{
PackageID = model.LearningPackageID, // not auto-generated PK!
Name = model.Name,
Description = model.Description,
DateCreated = DateTime.Now
};
// assume moduleID is defined to a valid module ID (yes, tested)
var module = entities.Modules.Where( x => x.ID == moduleID);
module.Pacakges.Add(modelToAdd);
entities.SaveChanges();
基本上,模块和包之间存在1:M的关系。但是,当我尝试设置ModuleID(从下拉列表中获取)时,对于这两种情况,我将得到:
A dependent property in a ReferentialConstraint is mapped to a store-generated column.
PackageID是字母数字的,不是自动生成的,也不是ModuleID,因为它是FK
我该怎么办?请检查Package.ModuleID概念属性和store列(我假设您使用的是Devart实体模型,因此可以在model Explorer->model.store中进行检查)是否已将StoreGeneratedPattern设置为None。非实体键引用约束属性既不能是标识也不能计算。因此,
包中的所有PK和FK都将StoreGeneratedPattern
设置为None
?但是,Module.ModuleID是主键,它使用Idenity的store generated模式。如果我将其设置为“无”,那么生成自动递增数字的序列仍然有效吗?@Extrakun,我刚才说的是Package表中的ModuleID列。模块表的Identity ID列应该没有任何问题。