![](/img/trans.png)
[英]Invalid object name 'dbo.TableName' when retrieving data from generated table
[英]Invalid object name 'dbo.Infoes' when retrieving data from DB using EF
我真的是MVC的初学者。 我已经制作了仅使用此代码从名为Info
的表中检索数据的视图
控制器:
namespace FP.WebUI.Controllers
{
public class HomeController : Controller
{
private IRetrieveData repo;
public HomeController(IRetrieveData repoParam)
{
repo = repoParam;
}
public ViewResult Index()
{
Info model = repo.Info.ToList().FirstOrDefault();
return View(model);
}
}
}
和视图:
<div id="follow">
<a href="http://@Model.Facebook.Substring(Model.Facebook.IndexOf("http://")+1,Model.Facebook.Length)"><img src="img/temp.png" alt="facebook"/></a>
<a href="http://@Model.Twitter.Substring(Model.Twitter.IndexOf("http://")+1,Model.Twitter.Length)"><img src="img/temp.png" alt="twitter"/></a>
<a href="mailto://@Model.Email"><img src="img/temp.png" alt="email"/></a>
</div>
但是我总是在行中得到这个异常:
Info model = repo.Info.ToList().FirstOrDefault();
例外是:
“ /”应用程序中的服务器错误。
无效的对象名称“ dbo.Infoes”。
说明:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:无效的对象名称'dbo.Infoes'。
我不知道问题出在哪里,所以我将把项目的相关部分放进去。
根Web.config
内的连接字符串:
<connectionStrings>
<add name="EFDbContext" providerName="system.data.sqlclient" connectionString="Data Source=.;Initial Catalog=photography;Integrated Security=True"/>
</connectionStrings>
EFDbContext类:
namespace FP.Domain.Concrete
{
public class EFDbContext : DbContext
{
public DbSet<Gallery> Gallery { get; set; }
public DbSet<SessionImages> SessionImages { get; set; }
public DbSet<Sessions> Sessions { get; set; }
public DbSet<Admins> Admins { get; set; }
public DbSet<Info> Info { get; set; }
public DbSet<Offers> Offers { get; set; }
}
}
EFDbRetrieve类别:
namespace FP.Domain.Concrete
{
public class EFDbRetrieve : IRetrieveData
{
private EFDbContext context = new EFDbContext();
public IQueryable<Admins> Admins
{
get { return context.Admins; }
}
public IQueryable<Gallery> Gallery
{
get { return context.Gallery; }
}
public IQueryable<SessionImages> SessionImages
{
get { return context.SessionImages; }
}
public IQueryable<Sessions> Sessions
{
get { return context.Sessions; }
}
public IQueryable<Offers> Offers
{
get { return context.Offers; }
}
public IQueryable<Info> Info
{
get { return context.Info; }
}
}
}
IRetrieveData接口:
namespace FP.Domain.Abstract
{
public interface IRetrieveData : IAdmins, IGallery, ISessionImages, ISessions, IOffers, IInfo
{
}
}
继承自IInfo接口:
namespace FP.Domain.Abstract
{
public interface IInfo
{
IQueryable<Info> Info { get; }
}
}
如果有人在这方面帮助了我,我将非常感激,我为此感到沮丧。
就像他们建议的那样,问题在于表名正在变得复数(Info映射到名为Infoes的表)。 您可以在SQL中检查表名称。 要禁用此功能,请添加:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
到EFDbContext类。
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.