我的EF模型中有一个表,在访问时没有在数据库中创建。
表名是" sites"并通过使用名为" CompanyId"的外键链接到父表。
我正在寻找列出属于特定公司的所有网站(公司表链接到ApplicationUser)
我希望当我在数据库中调用它将要创建的站点列表时。但是,我只是收到一个错误,表明该表不存在
我对这两个表的模型如下
public class Company
{
[Key]
public int CompanyId { get; set; }
public string CompanyName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string Address3 { get; set; }
public string PostCode { get; set; }
public string County { get; set; }
public string Country { get; set; }
public string TelephoneNumber { get; set; }
public string Email { get; set; }
public virtual IQueryable<Site> Sites { get; set; }
}
public class Site
{
[Key]
public int SiteId { get; set; }
public int CompanyId { get; set; }
public string SiteName { get; set; }
public string Url { get; set; }
}
和我的控制器
public ActionResult Index()
{
//get the user details
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currentuser = manager.FindById(User.Identity.GetUserId());
// search
var company = currentuser.Companies;
var sites = company.Sites;
if (sites == null)
{
sites = db.Sites.Where(c => c.CompanyId == company.CompanyId);
return View(sites.ToList());
}
return View(company.Sites.ToList());
}
答案 0 :(得分:1)
您可以使用数据库管理器查看数据库中创建的表格吗?
尝试
1:改变
public virtual IQueryable<Site> Sites { get; set; }
的
public virtual ICollection<Site> Sites { get; set; }
2:将属性添加到您的网站类
public Company Company { get; set; }
答案 1 :(得分:0)
您是否为更改创建了迁移?如果不是,则在程序包管理器控制台中发出“Add-Migration whateverYouWant”命令。
您是否启用了自动迁移?如果没有,那么你必须在包管理器控制台中验证命令“update-database”。
查看Migrations文件夹下的Configuration.cs文件 并检查配置构造函数。应该有一个名为“AutomaticMigrationsEnabled”的属性设置为true,以便执行您期望的操作。