Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 元数据集合中不存在标识为的成员。参数名称:identity_Asp.net_Sql Server_Entity Framework_Code First - Fatal编程技术网

Asp.net 元数据集合中不存在标识为的成员。参数名称:identity

Asp.net 元数据集合中不存在标识为的成员。参数名称:identity,asp.net,sql-server,entity-framework,code-first,Asp.net,Sql Server,Entity Framework,Code First,我们首先使用的是EF代码4.3.1。 我们正在开发一个涉及多个类库的ASP.NET Web角色。 有两个类库,每个类库包含类和一个单独的DBcontext 假设图书馆有A和B两类。 DBcon1:DbSet和DbSet 假设图书馆2有C类和D类。 C类{ [关键] 公共int-CId{get;set;} [Required] public virtual A referencedA {get; set;} } DBcon2: DbSet<C> and DbSet<D>

我们首先使用的是EF代码4.3.1。 我们正在开发一个涉及多个类库的ASP.NET Web角色。 有两个类库,每个类库包含类和一个单独的DBcontext

假设图书馆有A和B两类。 DBcon1:DbSet和DbSet

假设图书馆2有C类和D类。 C类{ [关键] 公共int-CId{get;set;}

[Required]
public virtual A referencedA {get; set;}
}
DBcon2: DbSet<C> and DbSet<D>
我得到一个例外: “元数据集合中不存在标识为的成员。 参数名称:标识“

DBCon1和DBcon2都使用sane SQL Server数据库“SampleDB”


请给我指出正确的方向。

例外情况有点神秘,但如果您意识到上下文需要有关实体(元数据)的信息才能编写sql语句,则非常清楚。因此,您的DBcon2上下文不知道在哪里可以找到
a
的主键,因为它没有关于a的元数据

但是,您可以设置一个整数属性A_Id(或类似的属性),但随后必须编写自定义代码将其解析为
A


另一个选项是合并(部分)上下文,如果可能的话。

我得到了这个错误,并通过不尝试在相关表中设置导航属性来修复它,只需设置外键id即可

乙二醇

公共班级学生()
{
公共int StudentId{get;set;}
公共字符串StudentName{get;set;}
public int CourseId{get;set;}
公共虚拟课程{get;set;}
}
公营课程(
{
public int CourseId{get;set;}
公共字符串CourseName{get;set;}
公共虚拟ICollection学生{get;set;}
}
主要代码:

var myCourse = new Course();
var myCourseId = 1;

var student = new Student() {
    CourseId = myCourseId
    // Course = myCourse <-- this would cause the error
}
var myCourse=新课程();
var myCourseId=1;
var student=新学生(){
CourseId=myCourseId

//Course=myCourse您能清楚地知道如何合并上下文吗?这是什么意思?另外,A有一个键,DBcon1知道,我们如何告诉DBCon2相同的键?既然上下文在同一个数据库上,您可以将所有类放在一个上下文中。这不是什么神奇的合并命令,只是手动重构数据层。W我们希望保持DataContext的不同,因为我们希望保持核心DBCon1独立于添加的其他模块。您能建议如何继续并将A的元数据通知DBCon2吗?您必须将A包含在DBCon2上下文中,并保持仅用于参考的郑重意图,因此DBCon1用于维护CA的e。
public class Student()
{
    public int StudentId { get; set; }
    public string StudentName { get; set; }
    public int CourseId { get; set; }
    public virtual Course Course { get; set; }
}

public class Course()
{
    public int CourseId { get; set; }
    public string CourseName { get; set; }
    public virtual ICollection<Student> Students { get; set; }
}
var myCourse = new Course();
var myCourseId = 1;

var student = new Student() {
    CourseId = myCourseId
    // Course = myCourse <-- this would cause the error
}