LINQ&实体框架 - List.Contains不起作用

时间:2015-01-01 15:50:35

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

我正在尝试使用.NET 4在带有.NET 4的MVC 4 WebAPI中使用LINQ和Entity Framework 6过滤数据。

问题已经结束了:

public object Get(int id)
    {
        SiscalContext sys = new SiscalContext();
        if (!sys.FileExist(id))
            throw new Exceptions.BadRequest.FIDNoExist();
        User LoggedUser = sys.AuthUserInfo();
        File file = sys.Files.Where(itm => itm.ID == id).FirstOrDefault();
        if (file.Owner != LoggedUser.ID && (file.Permissions == Permissions.OnlyMe || (file.Permissions == Permissions.Specific && !file.Group.Contains(LoggedUser.ID))))
            throw new Exceptions.Forbidden.NotAllowed();
        return file;
    }

具体在:

!file.Group.Contains(LoggedUser.ID)

如果超出此范围,则会出现下一个错误:

  

LINQ to Entities不支持指定的类型成员“Group”。仅支持初始化程序,实体成员和实体导航属性。

File的模型是下一个:

public enum Permissions { OnlyMe, Specific, Public };
public enum FileType { Folder, File };

public class File
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Directory { get; set; }
    public int Owner { get; set; }
    public Permissions Permissions { get; set; }
    public virtual List<int> Group
    {
        get
        { return string.IsNullOrEmpty(this.GroupJSON) ? new List<int>() : JsonConvert.DeserializeObject<List<int>>(this.GroupJSON); }
        set
        { GroupJSON = JsonConvert.SerializeObject(value); }
    }
    [JsonIgnore]
    public string GroupJSON { get; private set; }
    public FileType Type { get; set; }
}

我可以做些什么来继续使用相同的模型?

0 个答案:

没有答案