gpt4 book ai didi

c# - 在类中使用 UserProfile 外键在 MVC 4 中创建新的配置文件

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

我正在尝试制作一个使用内置 MVC 用户配置文件作为身份验证方法的基本网站。我正在使用 MVC4.0 和 Entity Framework 。

我有一个使用 UserProfile 模型作为外键的主数据类。此类是“游戏”类,目的是将游戏与特定用户相关联。

我还向 UserProfile 类添加了另一个成员,作为该项目的必要条件。

每次我尝试添加一个新游戏,其中有一个用户的配置文件作为外键时,服务器最终会完全创建一个新的用户配置文件,即使我特地让它是同一个用户。

作为解决此问题的尝试的一部分,我将 Game 对象添加到用户配置文件 DbContext,但是这根本没有帮助,每次我将新游戏插入到数据库。

我的模型如下:

public class Game
{
public int ID { get; set; }

[ForeignKey("UserId")]
public virtual UserProfile Profile { get; set; }

public int UserId { get; set; }
}

[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public int Balance { get; set; }
}

我的新 UsersContext 是:

public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}

public DbSet<UserProfile> UserProfiles { get; set; }
public DbSet<Game> GamesList { get; set; }
}

我添加新游戏的方法是:

        Models.UsersContext uc = new UsersContext();
UserProfile prof = uc.UserProfiles.Where(c=>c.UserName == HttpContext.User.Identity.Name).First();
Game g = new Game();
g.Profile = prof;
g.Wager = int.Parse(BetQuantity);

uc.GamesList.Add(g);
uc.SaveChanges();

我真的不知道我做错了什么,任何帮助将不胜感激!

最佳答案

像这样更改您的 UserProfile 类:

[Table("UserProfile")]
public class UserProfile
{
public UserProfile()
{
this.Games = new HashSet<Game>();
}

[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public int Balance { get; set; }

public virtual ICollection<Game> Games { get; set; }
}

然后像这样插入你的游戏:

Models.UsersContext uc = new UsersContext();

Game g = new Game();
g.UserId = WebSecurity.CurrentUserId;
g.Wager = int.Parse(BetQuantity);

uc.GamesList.Add(g);
uc.SaveChanges();

请注意,您尚未在 Game 模型中为 Wager 声明任何属性。我不知道那是什么......

关于c# - 在类中使用 UserProfile 外键在 MVC 4 中创建新的配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14165581/

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