我正在使用EF 6。
我想将自己的域类用作edmx模型类,因此我删除了tt生成的模型类,并将edmx build Action更改为None。
当我尝试执行select时,我得到MetadataException
DbContext context = new DbContext("name=BaseObjectsEntities");
var u = context.Set<User>().Where(x => x.Id == 1).FirstOrDefault();
与生成的tt模型类完美配合,但不适用于我自己的类。
我应该做什么或配置我的课程与edmx链接。
ps:我的类的类和属性名称已经等于edmx的。
答案 0 :(得分:2)
我解决了我的问题,
这些是我做的步骤:
如果你还没有
创建自己的域类;
创建数据库
创建表格
创建Edmx
现在仔细聆听,当你最终完成edmx的创建时,visual studio将在设计模式下打开edmx,不保存,不关闭,不做任何事情,只更改实体模型的名称及其属性(在表示模型的图块中,确保实体的名称和它的属性在域中指定,稍后我会告诉为什么不保存或关闭。
不要保存或关闭设计窗口,如果这样做并且你的域类在同一个项目中,它们将被创建emdx时生成的.tt类覆盖。
删除所有聚合到emdx并且不保存的.tt文件。
删除“自定义工具”中写入的内容,并确保构建操作为EntityDeploy
删除自定义工具中写入的文本后,单击“输入”,然后单击“构建解决方案”
现在它会起作用。
从visual studio和项目文件夹中删除项目,重新创建它,然后重新启动初始步骤。