Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SimpleMembership和带有外键的实体播种Enity Framwork_C#_Entity Framework_Asp.net Web Api - Fatal编程技术网

C# 使用SimpleMembership和带有外键的实体播种Enity Framwork

C# 使用SimpleMembership和带有外键的实体播种Enity Framwork,c#,entity-framework,asp.net-web-api,C#,Entity Framework,Asp.net Web Api,我正在尝试在我的ContextInitializer类中使用SimpleMemberships和Entities为实体框架数据库种子。我的实体有一个指向Users表的外键,如下所示,因此我首先填充了我的用户,然后填充了我的实体(事件),如下所示,在我的ContextInitializer类中 protected override void Seed(CustomContext context) { WebSecurity.InitializeDatabaseConnection("MyC

我正在尝试在我的ContextInitializer类中使用SimpleMemberships和Entities为实体框架数据库种子。我的实体有一个指向Users表的外键,如下所示,因此我首先填充了我的用户,然后填充了我的实体(事件),如下所示,在我的ContextInitializer类中

protected override void Seed(CustomContext context)
{
    WebSecurity.InitializeDatabaseConnection("MyContext", "Users", "UserId", "UserName", autoCreateTables: true);

    seedUsers(context);
    seedEvents(context);
    /* snip */
}

private void seedUsers(CustomContext context)
{
    var roles = (SimpleRoleProvider) Roles.Provider;
    var membership = (SimpleMembershipProvider) Membership.Provider;

    if (!roles.RoleExists("Admin"))
    {
        roles.CreateRole("Admin");
    }

    if (membership.GetUser("test", false) == null)
    {
        membership.CreateUserAndAccount("test", "test");
    }

    if (!roles.GetRolesForUser("test").Contains("Admin"))
    {
        roles.AddUsersToRoles(new[] {"test"}, new[] {"Admin"});
    }
}

private void seedEvents(InviteeContext context)
    {
        var membership = (SimpleMembershipProvider) Membership.Provider;

        events = new List<Event>()
        {
            new Event() { name = "Test 1", owner_id = membership.GetUserId("test")},
            new Event() { name = "Test 2", owner_id = membership.GetUserId("test")}
        };

        events.ForEach(p => context.Events.Add(p));
        context.SaveChanges();
    }
}
活动:

public class Event
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public int owner_id { get; set; }
    [ForeignKey("owner_id")]
    public virtual User owner { get; set; }
    /* Snip */
}
我的上下文如下所示:

public class CustomContext : DbContext
{
    public CustomContext()
        : base("name=MyContext")
    {

    }
    public DbSet<Event> Events { get; set; }
    public DbSet<User> Users { get; set; }
    /* Snip */
}
public类CustomContext:DbContext
{
公共自定义上下文()
:base(“name=MyContext”)
{
}
公共数据库集事件{get;set;}
公共数据库集用户{get;set;}
/*剪断*/
}

忽略此问题,问题在于WebSecurity.InitializeDatabaseConnection或User类中的键入错误

Web安全性在数据库“MyContext”中设置一个名为Users的表,而我的类创建一个名为User的表

WebSecurity.InitializeDatabaseConnection("MyContext", "Users", "UserId", "UserName", autoCreateTables: true);

}

WebSecurity.InitializeDatabaseConnection("MyContext", "Users", "UserId", "UserName", autoCreateTables: true);
[Table("User")]
public class User
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }