如何为linq查询分配角色

时间:2014-03-19 17:35:43

标签: c# asp.net-mvc linq linq-to-sql

我正在尝试区分以下两个查询之间的用户。我没有' rolename'数据库服务器中的字段,但我想知道是否可以将角色名称分组或分配给查询

这是我目前提出的其中一个查询:

public class User : iUser
{
    private cd db;

    public User()
    {
        db = new cd();
    }

    public User(cd context)
    {
        db = context;
    }

    public string Role { get; set; }

    public UserDetail trial(string username, string password)
    {

        string[] role = new string[] { "trial"};

        var query = (from s in db.Subs
                    join u in db.UserDetails on s.sUID equals u.uID
                    where s.sExpiryDate >= DateTime.Now &&
                    u.uUsername == username &&
                    u.uPassword == password
                    select u).FirstOrDefault();

        if (query != null)
        {
            // Build a user and add the appropriate Trial role
            return new UserDetail() { query.uUsername = username, query.uPassword = password, Role = "Trial" };
        }
        else
        {
            // No user was found
            return null;
        }
    }

}

UserDetail类:

public partial class UserDetail
  {
    public UserDetail()
    {
        this.Subs = new HashSet<Subs>();
        this.Trial = new HashSet<Trial_Try>();
    }
    public int uID { get; set; }
    public string uUsername { get; set; }
    public string uPassword { get; set; }
  }

目前,我遇到以下字段用户名,密码和角色的编译错误。错误 - &#34; UserDetail不包含用户名,密码和角色的定义。&#34;

我不确定这是否是正确的方法,如果有人可以告诉我,在这个问题上,我将非常感激。

欲望输出,我正在寻找这种方法,如果我希望能够使用此查询,测试,对于特定的角色名称(例如试用),只有符合试用查询的用户才能访问某些信息/页。

1 个答案:

答案 0 :(得分:0)

看起来你只是在初始化中向后转移了作业:

// Build a user and add the appropriate Trial role
return new UserDetail() {
    uUsername = query.uUsername, 
    uPassword = query.uPassword, 
    Role = "Trial" };

但是没有看到UserDetail的定义,很难确定。

修改

好的,我现在看到了这个问题 - 不,你不能动态地向UserDetail类添加属性。您可以在类定义中添加一个(并且不将其映射到数据库),也可以使用Role属性创建另一个类,并以某种方式将其链接到UserDetail,但你不能简单地添加这样的属性。