EF 数据库初始化器循环遍历具有重载的列表方法

本文关键字:重载 列表 方法 遍历 数据库 初始化 循环 EF | 更新日期: 2023-09-27 17:55:57

下面是我的Intializer.cs,我被告知为了保留我的 Guid,我必须使用导航属性,以便在我的数据库中具有正确的关系(在 EF Code First DatabaseIntializer 中重用 GUID)。这似乎解决了我之前遇到的问题,但现在我想获取我的信息并使用 Seed 将其实际添加到数据库中,我不确定如何满足此错误。我收到错误addUsers(Applications apps)"eflogin。Models.Applications 是一种像变量一样使用的'类型'。我感觉我这样做做错了。

public class DatabaseIntializer : DropCreateDatabaseIfModelChanges<DataContext>
        {
protected override void Seed(DataContext context)
                {
                    addApplications().ForEach(a => context.Applications.Add(a));
                    addUsers(Applications apps).ForEach(u => context.User.Add(u));
                      // if i take out Applications apps
                      // i get No overload for method"addUsers" takes 0 arguments 
                }
private static List<Applications> addApplications()
            {
                var apps = new List<Applications>
                {
                    new Applications
                    {
                      ApplicationId = Guid.NewGuid(),
                      ApplicationName = "Test Login"
                    }
                };
                return apps;
            }
private static List<Users> addUsers(Applications apps)
            {
                var use = new List<Users>
                {
                    new Users
                    {
                        UserId = Guid.NewGuid(),
                        UserApplication = apps,
                        UserName = "Ralph",
                        IsAnonymouse = false,
                        LastActivityDate = System.DateTime.Now

                    }
                };
                return use;
            }

EF 数据库初始化器循环遍历具有重载的列表方法

问题是你在对 addUsers 方法的调用中传入类型和实例。

addUsers(Applications apps)

如果您删除应用程序并像这样离开应用程序。

addUsers(apps)

您将收到另一个错误,因为您正在传入对象集合,并且该方法需要单个实例。

下面是对 Seed 方法的建议编辑,应该可以让您克服这两个错误。

var apps = addApplications();
apps.ForEach(a => context.Applications.Add(a));
foreach (var app in apps)
{
    var users = addUsers(app)
    users.ForEach(u => context.User.Add(u));
}

注意:我认为保持实体名称复数有助于引起一些混乱。