EF / LINQ:Find()操作

时间:2014-03-11 10:59:59

标签: c# linq entity-framework asp.net-mvc-4

我试图获取当前用户数据行。但是,当我执行此代码时

MNDataContext _db = new MNDataContext();
var nm = User.Identity.Name;
var id = (int)Membership.GetUser(User.Identity.Name).ProviderUserKey;
var slct = _db.Utilisateurs.Find((int)Membership.GetUser(User.Identity.Name).ProviderUserKey);

我将null作为var slct行的值。这很奇怪,因为调试器指示nm和id具有正确的值,但最后一个没有获得正确的对象值。

MNDataContext类

public class MNDataContext: DbContext
{
    public DbSet<UtilisateurModel> Utilisateurs { get; set; }
}

Utilisateur的主键:

[Key]         
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]         
[Display(Name = "Identifiant")]         
public int UserId { get; set; }

有什么好主意吗?

非常感谢!!

2 个答案:

答案 0 :(得分:0)

当你这样尝试时会发生什么?

MNDataContext _db = new MonitoringNDataContext();
var nm = User.Identity.Name;
var id = (int)Membership.GetUser(User.Identity.Name).ProviderUserKey;
UtilisateurModel slct = _db.Utilisateurs.Find(id);

slct是否仍为空? id有什么价值?

答案 1 :(得分:0)

只是一个疯狂的猜测......你正在寻找一个想要一个对象的int。试试这样的事情

MNDataContext _db = new MonitoringNDataContext();
var nm = User.Identity.Name;
var id = (int)Membership.GetUser(User.Identity.Name).ProviderUserKey;
UtilisateurModel slct = _db.Utilisateurs.Find(x=>x.Id=id);