首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityFramework和aspnetdb

EntityFramework和aspnetdb
EN

Stack Overflow用户
提问于 2012-05-03 13:56:29
回答 1查看 491关注 0票数 2

我正在尝试将实体框架与默认成员"aspnetdb“数据库一起使用。

我在成员资格和用户表方面遇到了问题,因为我希望有一个从成员资格到用户的导航属性。

我觉得我已经尝试了fluent api映射的每一种组合,但我肯定遗漏了什么-或者当外键是UserId时,可能就是做不到-这也是两个表的主键?

这就是我所拥有的:

代码语言:javascript
复制
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“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-03 15:59:56

试试这个:

代码语言:javascript
复制
modelBuilder.Entity<Membership>()
            .HasRequired(m => m.User)
            .WithOptional(u => u.Membership);

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10425876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档