我目前遇到了这个错误
实体类型Person不是当前上下文模型的一部分。
我通过在下面的代码中更改了model1.tt中的第284行(如果你没有给edmx命名,它会给你model1)来生成这个bug。我这样做是因为我们的约定是拥有camalCase数据库列名和PascalCase对象属性名。下面的代码将camalCase列名称转换为PascalCase对象属性名称,如下所述。
string.Format("{0}{1}",_code.Escape(edmProperty).Substring(0,1).ToUpper(),_code.Escape(edmProperty).Substring(1)),
由T4模板生成的实体
public partial class Person
{
public int PersonId { get; set; }
public int Age { get; set; }
}
表定义
CREATE TABLE Person ( personId int, age int))
当我尝试进行集成测试时出现问题
_context.Person.toList();
当运行与数据库交互的任何代码时,会发生先前描述的错误。如何修复我的解决方案,以便我可以使用PascalCase属性名称和camelCase数据库列名称并按预期工作?
**编辑**
我使用的是EF 5,无法访问EF 6
这也是使用Database-First
**编辑2 **
public string Property(EdmProperty edmProperty)
{
return string.Format(
CultureInfo.InvariantCulture,
"[Column(\"{5}\")]\n{0} {1} {2} {{ {3}get; {4}set; }}",
Accessibility.ForProperty(edmProperty),
_typeMapper.GetTypeName(edmProperty.TypeUsage),
_code.Escape(edmProperty),
//_code.Escape(string.Format("{0}{1}",_code.Escape(edmProperty).Substring(0,1).ToUpper(),_code.Escape(edmProperty).Substring(1))),
_code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
_code.SpaceAfter(Accessibility.ForSetter(edmProperty)),
_code.Escape(edmProperty));
}
这是我修改过的t4模板。注释掉的代码不起作用,它上面的行就可以了。 (使用我的集成测试)