gpt4 book ai didi

c# - EntityFramework 和 aspnetdb

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:42 26 4
gpt4 key购买 nike

我正在尝试将 Entity Framework 与默认成员“aspnetdb”数据库一起使用。

我在处理成员资格和用户表时遇到了问题,因为我想要一个从成员资格到用户的导航属性。

我觉得我已经尝试了流畅的 api 映射的每一种组合,但我一定遗漏了一些东西——或者当外键是 UserId 时,它可能无法完成——这是两个表的主键好吗?

这是我所拥有的:

public class Membership {
[Key]
public Guid UserID { get; set; }
public String Password { get; set; }

public virtual User User { get; set; }
}

public class User {
[Key]
public Guid UserId { get; set; }
public String UserName { get; set; }

//public virtual Membership Membership { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}



protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<Membership>().ToTable("dbo.aspnet_Membership");
modelBuilder.Entity<Role>().ToTable("dbo.aspnet_Roles");
modelBuilder.Entity<User>().ToTable("dbo.aspnet_Users");
modelBuilder.Entity<User>()
.HasMany(m => m.Roles)
.WithMany(m => m.Users)
.Map(m => {
m.ToTable("aspnet_UsersInRoles");
m.MapLeftKey("UserId");
m.MapRightKey("RoleId");
});
//modelBuilder.Entity<Membership>()
// .HasRequired(m => m.User);
//.WithOptionalPrincipal(m => m.Membership).Map(m=>m.MapKey("UserId"));
Database.SetInitializer<EkomiteDBC>(null);
base.OnModelCreating(modelBuilder);
}

角色设置良好且有效,但无论我如何尝试定义成员资格和用户之间的连接,我都会不断收到不同的映射错误。

我知道我可能遗漏了一些基本的东西,有人可以帮忙吗?

编辑:问题似乎是“membership”和“users”表都有主键“UserID”。

最佳答案

试试这个:

modelBuilder.Entity<Membership>()
.HasRequired(m => m.User)
.WithOptional(u => u.Membership);

无论如何,你根本不应该这样做。使用标准成员资格 API 访问这些表。这些表不是你的,它们属于成员资格/角色 API,通过 EF 处理它们只会删除或破坏 API 提供的开箱即用的功能——通常它会降低安全性,因为这些表将可用于 EF 和业务规则中的更新来自 Membership/Role API 的将不会被强制执行。

关于c# - EntityFramework 和 aspnetdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10425876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com