2017-01-05 42 views
3

我正在使用EF 6.如何使用我自己的类作为edmx模型类?

我想使用我自己的域类作为edmx模型类,所以我删除了tt生成的模型类并将edmx build Action更改为None。

当我试图执行一个选择,我得到MetadataException

DbContext context = new DbContext("name=BaseObjectsEntities"); 
var u = context.Set<User>().Where(x => x.Id == 1).FirstOrDefault(); 

与生成的TT模型类作品完美,但不符合我自己的类。

我应该怎么做或配置我的类与edmx链接。

ps:我的类已经有他们的类和属性名称等于edmx的。

+0

'完美地与生成的tt模型类一起工作,但与我自己的类无关。“<=那么究竟发生了什么?请记住,我们无法看到您的电脑显示器,因此对**正在发生的事情以及与预期行为有何不同之处的描述将会受到赞赏。 – Igor

+0

如果我不删除TT类和更改对象 来自: - context.Set 到: - context.Set 它会工作,但我不得不删除生成的,用我自己的类。 –

+0

你有没有考虑过把代码放在第一步,在C#中定义类和映射,而不是使用T4模板? – Igor

回答

2

我解决我的问题,

这些都是我做的步骤:

  • 如果您还没有

    创建您自己的域类;

  • 创建数据库

    创建表

  • 创建EDMX

    现在仔细听,当你完成EDMX的创建,Visual Studio将在打开EDMX设计模式,不保存,不关闭,不要做任何事情,只是改变实体模型及其名称属性(在表示模型的图块中),确保实体的名称和它的属性与域中指定的相同,稍后我会告诉为什么不保存或关闭。

不要保存或关闭设计窗口的是,如果你这样做,你的域类是在他们将在emdx是生成了.TT类将被覆盖在同一个项目创建。

删除所有集成到emdx且不保存的.tt文件。

  • 在EDMX现在右键点击>属性

擦除无论是在“自定义工具”创作的,并确保生成操作EntityDeploy

当您删除的文字创作的在自定义工具中,点击输入,然后构建解决方案

现在它无线我会工作。

  • 我忘了提,如果这些步骤不起作用,有一个秘密的步骤:

从Visual Studio和项目文件夹删除项目,重建它,并重新启动初始脚步。

+0

微软Konami码? Hollygod!这个对我有用! –

相关问题