1
我有一個簡單的2表格數據庫,由用戶和組組成。下面是表的列:在實體框架中插入記錄時的空引用異常
用戶:
- 用戶名
- 用戶名
- 羣ID
組:
- GROUPID
- 組名
而這裏是生成的類:
public partial class Group
{
public Group()
{
this.Users = new HashSet<User>();
}
public int GroupID { get; set; }
public string GroupName { get; set; }
public virtual ICollection<User> Users { get; set; }
}
-
public partial class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public Nullable<int> GroupID { get; set; }
public virtual Group Group { get; set; }
}
我需要作出哪些插入一個用戶爲給定組的方法。如果該組不存在,它應該創建它。我正在使用實體框架。下面是一些代碼:
public class Entry
{
public static void Main()
{
using (var dbContext = new UserSystemEntities())
{
var user = new User();
user.UserName = "h4x0r";
AddUserToGroup(dbContext, "Admins", user);
Console.WriteLine("User {0} added successfully.", user.UserName);
}
}
public static void AddUserToGroup(UserSystemEntities dbContext, string groupName, User user)
{
using (var dbTransaction = dbContext.Database.BeginTransaction())
{
var group = dbContext.Groups.FirstOrDefault(x => x.GroupName == groupName);
try
{
if (group == null)
{
var newGroup = new Group();
newGroup.GroupName = groupName;
dbContext.Groups.Add(newGroup);
}
dbContext.Groups.FirstOrDefault(x => x.GroupName == group.GroupName).Users.Add(user);
dbContext.SaveChanges();
}
catch(Exception ex)
{
Console.WriteLine("Error occured! " + ex.message);
dbTransaction.Rollback();
}
dbTransaction.Commit();
}
}
}
有與添加的用戶組中的一個問題:
dbContext.Groups.FirstOrDefault(x => x.GroupName == group.GroupName).Users.Add(user);
拋出一個空引用異常,我只是不能找出原因。現在主演約20分鐘,但仍無法找到答案。我爲什麼想念?
仍然導致空引用異常。 'group'varible有一個空值。 – zhulien 2014-12-06 23:06:13
哦,我修好了。我們只是用'group'交換'newGroup',一切正常。我不相信我錯過了那麼簡單的事情。然而,主演30分鐘沒有太多好處。 :D謝謝! – zhulien 2014-12-06 23:15:24
@zhulien不客氣! – 2014-12-06 23:16:51