如何将数据播种到已创建的数据库?

时间:2017-01-21 20:57:02

标签: c# entity-framework asp.net-identity-2 asp.net-mvc-5

我正在创建一个足球经理游戏。我使用了身份2.0,因为它适用于我的注册和登录。我能够添加所需的额外表格,但现在我需要将团队和玩家等数据播种到这些表格中。知道怎么做吗?使用迁移在身份模型中创建了额外的表。这是我正在使用的表格的图片。

tables

2 个答案:

答案 0 :(得分:0)

在Migrations文件夹中,有一个名为Configuration.cs的文件,其中包含Seed方法,可用于创建一些种子数据。

                                                                                       Process: com.xxx.xxx.debug, PID: 9391
                                                                                         java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

AsyncLayoutInflater asyncLayoutInflater = new AsyncLayoutInflater(this.getContext());
    asyncLayoutInflater.inflate(R.layout.my_row, myLayout,
                                new AsyncLayoutInflater.OnInflateFinishedListener() {
                                    @Override
                                    public void onInflateFinished(View view, int resid, ViewGroup parent) {
                                        for (int i = 0; i < myData.size(); i++) {
                                            TextView myTextView = (TextView) view.findViewById(android.R.id.text1);
                                            tagTextView.setText(myData.get(i).getName());
                                            ImageView myIcon = (ImageView) view.findViewById(android.R.id.icon);
                                            picasso.load(myData.get(i).getIcon()).into(myIcon);
                                            parent.addView(view);
                                        }
                                    }
                                });

只需运行update-database,您的表中就应该有数据。

答案 1 :(得分:0)

有两种Seed()方法可供使用 - 某些初始化程序中有一种,例如CreateDatabaseIfNotExist,只要创建数据库就会运行。另一个是migration Seed(),只要您通过update-database应用迁移,它就会运行。

由于每次迁移都会运行,因此您需要确保不要复制数据。你可以通过检查存在来做到这一点:

if (!context.Teams.Any())
{
     context.Teams.Add(new Team { Name = "Team A" });
     context.Teams.Add(new Team { Name = "Team B" });

}

但是有一种更好的方法专门用于名为AddOrUpdate的迁移:

protected override void Seed(ApplicationDbContext context)
{
    context.Teams.AddOrUpdate(
        team => team.Id,   // put the key or unique field here
        new Team
        {
            Id = 1,
            Name = "Team 1"
        },
        new Team
        {
            Id = 2,
            Name = "Team 2"
        });

    context.SaveChanges();
}