ASP MVC代码第一表创建

时间:2017-06-28 15:59:19

标签: asp.net-mvc entity-framework

我的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());
    }

2 个答案:

答案 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,以便执行您期望的操作。