我将 EF5 与 VS2012 一起使用,并且在生成表时遇到了问题。
1)我创建了一个包含 2 个表的简单数据库模式(edmx):
- 表 1:人
- 属性:Id(Guid)
属性:名称(字符串)
表 2:角色
- 属性:Id(Guid)
- 属性:类型(字符串)
- 属性:PersonId(Guid)(与表Person关联)
2)将唯一键(称为Id)的属性定义为:
- 并发模式:无
- 默认值:无
- 实体键:真
- 吸气剂:公共
- 姓名:身份证
- 可空:假
- 二传手:公开
- StoreGeneratedPattern:身份
- 类型:Guid(我也尝试过 Int32)
3)Entity模型的属性是:
- 代码生成策略:无
- 数据库生成工作流程:TablePerTypeStrategy (VS)
- 数据库模式名称:dbo
- DDL 生成模板:SSDLToSQL10.tt (VS)
- 实体容器访问:公共
- 实体容器名称:DatabaseSchemaContainer
- 延迟加载启用:真
- 元数据工件处理:嵌入输出程序集
- 命名空间:DatabaseSchema
- 复数新对象:错误
- 保存时转换相关文本模板:True
- 更新属性方面:真
- 验证构建:真
4)生成了相关的类,但是[Key]属性不存在:
using System;
using System.Collections.Generic;
public partial class Person
{
public Person()
{
this.Role = new HashSet<Role>();
}
//[Key] <-- Missed!
public System.Guid Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Role> Role { get; set; }
}
5)我创建了一个域服务来向客户端公开上述实体,例如:
[EnableClientAccess]
public class DomainService1 : DomainService
{
[Query]
public IEnumerable<Person> GetPersonSet()
{
}
[Update]
public void UpdatePerson(Person person)
{
}
[Insert]
public void InsertPerson(Person person)
{
}
[Delete]
public void DeletePerson(Person person)
{
}
}
6)重建并得到错误:
DomainService 'DomainService1' 中的实体 'Person' 没有定义键。DomainService 操作公开的实体类型必须至少具有一个标有 KeyAttribute 的公共属性。
任何建议表示赞赏!
啤酒