我正在处理WCF服务,我想在其中返回用户对象(Rolename,Userid,EmailId,密码,用户名等...),我想根据需要在我的表中存储数据。
这些是我的SQL Server 2008表:
UserMaster
:UserId, Username
等.... RoleMaster
:Roleid, RoleName
UserInRole
:UserId, RoleId
现在,当我为这些表创建edmx文件(数据库第一实体框架)时,在我的edmx文件中,即上下文文件中没有userinrole的dbset,因为没有userinrole的类文件。
但我没有使用edmx文件,因为我们无法为序列化编写Datamember Keyword,因为我在json中返回结果。我已经创建了所有类文件。
我的类文件结构如下:
[DataContract]
public class UserDetails
{
[DataMember]
public int Id { get; set; }
.
.
public virtual ICollection<RoleMaster> RoleMasters { get; set; }
}
[DataContract]
public class RoleMaster
{
[DataMember]
public int Id { get; set; }
.
.
}
[DataContract]
public class UserInRole
{
[DataMember]
public int UserId { get; set; }
[DataMember]
public int RoleId { get; set; }
public virtual UserDetails UserDetails { get; set; }
public virtual RoleMaster RoleMaster { get; set; }
}
我想在userdetails表中获取那些电子邮件和密码匹配的用户的角色。
这是我的疑问:
var user = context.UserDetails.Where(u => u.Username == "john" && u.Password == "123").FirstOrDefault();
这是我流利的api:
modelBuilder.Entity<UserDetails>()
.HasMany(i => i.RoleMasters)
.WithMany(u => u.UserDetails)
.Map(m =>
{
m.ToTable("UserInRole");
m.MapLeftKey("UserId");
m.MapRightKey("RoleId");
});
这是我得到的错误:
在模型生成期间检测到一个或多个验证错误:
\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType'UserInRole'具有 没有键定义。定义此EntityType的键。 \ tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet 'UserInRole'基于类型'UserInRole',没有定义键。
有人可以告诉我这个问题吗?
我是否需要在流畅的api中指定所有主键?