Entity framework MVC4实体框架控制器数据库问题
我试图从我的控制器执行插入或更新,但我收到一条错误消息,指出“ICN.CourierClient不包含我的各种属性(如“Address”)的定义,而事实上它确实包含,并且我对其他数据库模型的其他类似调用也可以使用相同的代码正常工作。如果我遗漏了某个参考或配置,我在dbset语句中以与其他模型相同的方式对其进行了定义:Entity framework MVC4实体框架控制器数据库问题,entity-framework,asp.net-mvc-4,Entity Framework,Asp.net Mvc 4,我试图从我的控制器执行插入或更新,但我收到一条错误消息,指出“ICN.CourierClient不包含我的各种属性(如“Address”)的定义,而事实上它确实包含,并且我对其他数据库模型的其他类似调用也可以使用相同的代码正常工作。如果我遗漏了某个参考或配置,我在dbset语句中以与其他模型相同的方式对其进行了定义: public DbSet<Courier> Couriers { get; set; } public DbSet<Driver> Driv
public DbSet<Courier> Couriers { get; set; }
public DbSet<Driver> Drivers { get; set; }
public DbSet<Job> Jobs { get; set; }
public DbSet<CourierClient> CourierClients { get; set; }
IQueryable<Courier> Datasource.Couriers { get { return Couriers; } }
IQueryable<Driver> Datasource.Drivers { get { return Drivers; } }
IQueryable<Job> Datasource.Jobs { get { return Jobs; } }
IQueryable<CourierClient> Datasource.CourierClients { get { return CourierClients; } }
您将
client
声明为IEnumerable
。这就是为什么编译器告诉您它没有属性,您希望在CourierClient
中找到这些属性
CourierClient client = (from c in db.CourierClients where c.ClientName == job.PickupCompanyName select c).SingleOrDefault();
if (client != null)
{
client.Address = job.PickupAddress1;
client.City = job.PickupCity;
client.State = job.PickupState;
client.Zip = job.PickupZip;
client.Phone = job.PickupPhone;
db.Entry(client).State = EntityState.Modified;
}
else
{
client = new CourierClient();
client.ClientName = job.PickupCompanyName;
client.Address = job.PickupAddress1;
client.City = job.PickupCity;
client.State = job.PickupState;
client.Zip = job.PickupZip;
client.Phone = job.PickupPhone;
db.CourierClients.Add(client);
}
db.SaveChanges();
请注意,如果未找到
CourierClient的实例,则会创建该实例。CourierClient实体是什么样子的?您能提供准确的错误吗?上面发布的实体,下面发布的回答错误消息。错误1无法将类型“ICN.CourierClient”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(是否缺少转换?)C:\ICN\ICN August\ICN August\Controllers\JobController.cs 241 53 ICN AugustError 2的System.Collections.Generic.IEnumerable不包含“Address”的定义,并且找不到接受“System.Collections.Generic.IEnumerable”类型第一个参数的扩展方法“Address”(您是否缺少using指令或程序集引用?)C:\ICN\ICN August\ICN August\Controllers\JobController.cs 245 28 ICN AugustI我尝试了您建议的声明,我可以看到上面发布的一系列错误消息。IEnumerable client=(来自db.CourierClients中的C,其中C.ClientName==job.PickupCompanyName选择C).SingleOrDefault();这很有效,谢谢!CourierClient ExistingClient=新CourierClient();ExistingClient=(从db.CourierClient中的c开始,其中c.ClientName==作业.PickupCompanyName=选择c)。SingleOrDefault();
public class CourierClient
{
[Key]
public virtual int ID { get; set; }
public virtual string ClientName { get; set; }
public virtual string ContactName { get; set; }
public virtual string Address { get; set; }
public virtual string City { get; set; }
public virtual string State { get; set; }
public virtual string Zip { get; set; }
public virtual string Phone { get; set; }
public virtual string Fax { get; set; }
public virtual string Email { get; set; }
}
CourierClient client = (from c in db.CourierClients where c.ClientName == job.PickupCompanyName select c).SingleOrDefault();
if (client != null)
{
client.Address = job.PickupAddress1;
client.City = job.PickupCity;
client.State = job.PickupState;
client.Zip = job.PickupZip;
client.Phone = job.PickupPhone;
db.Entry(client).State = EntityState.Modified;
}
else
{
client = new CourierClient();
client.ClientName = job.PickupCompanyName;
client.Address = job.PickupAddress1;
client.City = job.PickupCity;
client.State = job.PickupState;
client.Zip = job.PickupZip;
client.Phone = job.PickupPhone;
db.CourierClients.Add(client);
}
db.SaveChanges();