2015-06-05 131 views
0

我的问题是我的网站使用WebPages,Entity Framework 6.1.3,c#和SQL CE数据库。我的一个“数据库优先”生成的实体类型命名与system.TimeZone类完全相同,但intellisense和IDE没有正确地拾取/处理名称冲突。如何限定EF中的实体6

我的问题是如何完全限定代码中的实体名称(使用EF 6.1.3,实体上下文)来防止与系统类的名称冲突。

我有一个现有的数据库表的EF实现。该表被命名为“TimeZones”。实体模型是使用数据库优先方法生成的。

EF复数规则将表名称翻译为名为“TimeZone”的实体。

问题是,当我尝试新建“TimeZone”实体时,intellisense认为我正在尝试新建“System.TimeZone”类,因为所有对我的新TimeZOne实例的点引用都是属性和方法System.TimeZone类。我期望看到我的实体模型的TimeZOne实体的属性。

我希望能够用命名空间完全限定我的TimeZone实体,或者在我的代码顶部的using语句中包含模型的名称空间。但是,EF 6.1.3 Model属性为我提供的“名称空间”似乎不是真正的命名空间。 EF是从现有数据库生成的。

+0

就好像intellisense将两个类名合并成一个类,并默认返回System类。当实体类和系统类具有相同的名称时,这真的是真正的intellisense是如何工作的吗?是的,我知道,这是一个程序员错误,所有程序员都应该知道corlib中的所有类! – RRRSR

回答

0

让你的实体类路径明确,当你声明的一个对象:

MyApplication.Entities.TimeZone tz = new MyApplication.Entities.TimeZone(); 

或者干脆:

var tz = new MyApplication.Entities.TimeZone(); 

实体类应该像这样前面:

namespace MyApplication.Entities 
{ 
    public class Person 
    { 
     // 
    } 
} 
+0

对不起,如此愚蠢,但在我的网站在vs 2013中,我发现“MyApplication”。智力活动没有这样的动物。解决方案属性或项目(网站)属性中没有任何内容给我任何提示,我可以在其中找到MyApplication限定符 – RRRSR

+0

此外,我的问题是如何“使您的实体路径更明确”。 “实体”是我的实体上下文的名称。我无法找到高级限定符。 – RRRSR

+0

我编辑它。查找关于更多限定符信息的'namespace'关键字。 –