我正在尝试使用.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; }
}
我可以做些什么来继续使用相同的模型?