【问题标题】:EF/LINQ : Find() operationEF/LINQ : Find() 操作
【发布时间】:2014-03-11 10:59:58
【问题描述】:

我正在尝试获取当前用户数据行。但是,当我执行这段代码时

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; }

请问有什么绝妙的主意吗?

非常感谢!!

【问题讨论】:

  • (int)Membership.GetUser(User.Identity.Name).ProviderUserKey 的结果是什么?
  • @Ofiris,计算结果为 1
  • Utilisateurs 看起来像什么?它有id 属性吗?
  • @Ofiris,是的,它作为主键 [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] [Display(Name = "Identifiant")] public int UserId { get; set; }
  • 您可能想将该信息添加到您的问题中,请参阅我的回答。

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


【解决方案1】:

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

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 有什么价值?

【讨论】:

    【解决方案2】:

    只是一个疯狂的猜测......你正在寻找 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);
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 1970-01-01
      • 2013-02-09
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多