gpt4 book ai didi

c# - 如何使用带有 C# 的 .NET MVC 从配置文件中的列表中引用特定对象

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:53 25 4
gpt4 key购买 nike

我正在编写一个设置序列,在其中为 Multi-Tenancy CMS 中的新站点填充所需的数据。然而,虽然我非常熟悉数据设计和所有 Web 前端,但我对实际编码还是非常陌生。

正如您从下面的代码中看到的,我有一个“for each”表达式来创建我的角色,这些角色位于 config.cs 的列表中 - 这些创建非常漂亮。

然而,对于每个默认用户,我需要从我刚刚按名称创建的用户角色中分配一个值。我认为这可能与 LINQ 有关,但我不确定如何解决这个问题。有什么建议吗?

代码如下:

 foreach (var userRoleName in _configData.UserRoles)
{
var newUserRole = new UserRole(newSite, userRoleName);
_daoFactory.GetUserRoleDao().Save(newUserRole);
}

_daoFactory.GetUserRoleDao().FlushChanges();

//Thinking this is not needed?
Thread.Sleep(500);

//var newSiteCopy = _daoFactory.GetSiteDao().GetById(newSite.Id);
_daoFactory.GetSiteDao().Refresh(newSite);

foreach (var defaultUser in _configData.Users)
{
var newUser = new User(newSite, defaultUser.FullName, defaultUser.Login, defaultUser.Password);

_daoFactory.GetUserDao().Save(newUser);

}

_daoFactory.GetUserDao().FlushChanges();

这是 config.cs 代码:(实际值将从该文件移出到文档中,但此处仅用于开发目的。)

 public class ConfigData
{
public ConfigData()
{
SystemDomainDefault = ".joyatechsolutions.com";
UserRoles = new List<string>{"Administrator","Editor","Public","God"};
Users = new List<DefaultUser>
{
new DefaultUser { FullName = "Default Public User", Login = "", Password = "", UserRoleName = "Public"},
new DefaultUser { FullName = "Mary Camacho", Login = "mc", Password = "test1", UserRoleName = "God"},
new DefaultUser { FullName = "Mary", Login = "mn", Password = "test2", UserRoleName = "God"},
};

}
public List<DefaultUser> Users { get; set; }
public string SystemDomainDefault { get; set; }
public List<string> UserRoles { get; set; }
}

public class DefaultUser
{
public string FullName { get; set; }
public string Login { get; set; }
public string Password { get; set; }
public string UserRoleName { get; set; }
}

最佳答案

我想我可能遗漏了一些有助于回答我提出的问题的重要细节,昨晚我从一位同事那里得到了一些帮助,所以这就是我们解决问题的方法:

    User defaultPublicUser = null;
foreach (var newUserData in _configData.Users)
{
var newUser = new User(newSite, newUserData.FullName, newUserData.Login, newUserData.Password);
var userRole = newSite.UserRoles.First(ur => ur.Name == newUserData.UserRoleName);
if (newUserData.UserRoleName == "Public")
{
defaultPublicUser = newUser;
}
newUser.UserRoles.Add(userRole);
newUser.UserStatusType = _daoFactory.GetUserStatusTypeDao().GetById(UserStatusType.cActive);
_daoFactory.GetUserDao().Save(newUser);
}
_daoFactory.GetUserDao().FlushChanges();

本质上,我们有一个新的 Site 对象来保存保存的 UserRoles,我们使用 LINQ 查询该对象并返回我们随后与新用户相关联的值。您可以在上面的 config.cs 中看到,我们已经确定了每个新用户的角色名称应该是什么 - 因此我们在 userRoleName 中使用“.first”找到该名称,然后将保存的角色与用户相关联.

我们能够使用“.First”术语,因为此代码将在网站设置过程中严格使用,而且我们知道新网站将存在的唯一用户角色是我们刚刚在内部创建的用户角色这个序列的。这对于更通用的代码来说不够健壮。

最后,与问题无关,我们添加了一个 if 语句,以便我们可以将公共(public)用户与该站点相关联。同样,这仅在站点设置中有效,因为我们知道在运行此代码时该站点只存在一个公共(public)用户。

关于c# - 如何使用带有 C# 的 .NET MVC 从配置文件中的列表中引用特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7249481/

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