首页 新闻 搜索 专区 学院

EF中CodeFirst 查询数据时出错

0
[已解决问题] 解决于 2012-01-30 09:01

代码如下:

[Table("Patient")]
class Patient
{
public Patient()
{
Visits = new List<Visit>();

}

public int Id { get; set; }

public string Name { get; set; }

public DateTime BirthDate { get; set; }

public AnimalType AnimalType { get; set; }

public DateTime FirstVisit { get; set; }

public List<Visit> Visits { get; set; }

[NotMapped]
public string Extend { get; set; }
}




//----------------------------------

class VetContext : DbContext
{
public VetContext(string nameOrConnection):base(nameOrConnectionString:nameOrConnection)
{
// Database.SetInitializer<VetContext>(new DropCreateDatabaseIfModelChanges<VetContext>());
Database.SetInitializer<VetContext>(new CreateDatabaseIfNotExists<VetContext>());
}
public VetContext() { }

//还需要返回Patient类和Visit类的可查询数据集DbSets,以暴露类中的属性
public DbSet<Patient> Patients { get; set; }
}
//main-----
static void Main(string[] args)
{
CodeFirst.VetContext context = new CodeFirst.VetContext("Paients");

//CreateNewPatient();
Console.WriteLine("Completed!");

// SqlParameter param = new SqlParameter("@id", 1);
var name = context.Patients.SqlQuery("EXECUTE GetNameById @p0", "Sampson").ToList();
//var name = context.Database.SqlQuery<CodeFirst.Patient>("EXEC GetNameById Sampson");
foreach (var item in name)
{
Console.WriteLine(item.Name);
}
Console.ReadKey();
}


这里执行存储过程的时候出现异常:数据读取器与指定的Patient不兼容。某个类型“id”的成员在同名的数据读取器中没有对应列。

涅槃子的主页 涅槃子 | 菜鸟二级 | 园豆:208
提问于:2012-01-28 10:56
< >
分享
最佳答案
0

检查一下存储过程返回结果中是否包含id列

dudu | 高人七级 |园豆:37042 | 2012-01-28 14:26

没有啦,存储过程里面就返回name列呢。

涅槃子 | 园豆:208 (菜鸟二级) | 2012-01-29 22:07

@涅槃子: 要加上(不仅是id),Code First是根据实体中的属性进行映射的。

dudu | 园豆:37042 (高人七级) | 2012-01-29 22:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册