这几天用linq to entity 遇到了写问题
1.不支持 arrayindex,也就是不支持实体类型数组。这也难怪,本来数据库就没有数组这个类型。
2.不支持indexof,这样的话虽然linq to entity 支持substring,但是我们就不能用substring 切分字符串了
3.不支持string to int 的转换。这样我们就没办法比较了。
如果不想该数据库 这个问题没办法应付了
我只有部分解决方案
1
public class Mark
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
public string name { get; set; }
public string url{ get; set; }
public string img { get; set; }
public string points { get; set; }
public double[] point
{
get
{
return Array.ConvertAll(points.Split(';'), Double.Parse);
}
set
{
points = String.Join(";", value.Select(p => p.ToString()).ToArray());
}
}
public int percent{ get; set; }
public string status { get; set; }
public DateTime time { get; set; }
// public virtual UserProfile belongsto { get; set; }
// public UserProfile belongsto { get; set; }
// [ForeignKey("UserProfile")]
public int belongsto { get; set; }
[ForeignKey("belongsto")]
public virtual UserProfile UserProfile { get; set; }
}
使用在getset里面添加这些信息虽然可以使用。但怎么用还在摸索中。
2.
解决方法很简单只要使用
System.Data.Objects.SqlClient.SqlFunctions.CharIndex(“;”, mark.points).Value
当然System.Data.Objects.SqlClient.SqlFunctions里面还有其他函数,他可以把int等转化成string 但是却不能吧string 转化成int shit。
第三个暂时没有办法。所以以上方案就没法了。只能把数据库改了。