Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码优先:如何停止在数据库中生成类_C#_Asp.net Mvc_Entity Framework_Ef Code First - Fatal编程技术网

C# 代码优先:如何停止在数据库中生成类

C# 代码优先:如何停止在数据库中生成类,c#,asp.net-mvc,entity-framework,ef-code-first,C#,Asp.net Mvc,Entity Framework,Ef Code First,我的项目在当前数据库上工作时遇到了一个问题,但当我首先使用应用程序中的代码创建新数据库时,访问视图的类现在正在创建表。通过删除其他属性以仅显示相关代码,下面的类已被缩短 我的DBContextClass中有一个: public class MyDbContext : DbContext { public MyDbContext () { } public virtual DbSet<Order> Order{ get; set; }

我的项目在当前数据库上工作时遇到了一个问题,但当我首先使用应用程序中的代码创建新数据库时,访问视图的类现在正在创建表。通过删除其他属性以仅显示相关代码,下面的类已被缩短

我的DBContextClass中有一个:

public class MyDbContext : DbContext
{
     public MyDbContext ()
     {

     }
     public virtual DbSet<Order> Order{ get; set; }
     public virtual DbSet<v_OrdersByUser> v_OrdersByUsers { get; set; }
}
这将按预期创建一个表。但下面是我的SQL视图类:

public class v_OrdersByUser
{
    [Key]
    public string UserName { get; set; }
    public int OrdersCount { get; set; }
}
但是这个类也创建了一个表


在数据库中创建视图后,如何阻止这种情况发生,同时保持访问视图的能力?

请尝试在DbContext中删除这一行

public virtual DbSet<v_OrdersByUser> v_OrdersByUsers { get; set; }
公共虚拟数据库集v_OrdersByUsers{get;set;} 如果将其添加为DbSet,默认情况下,它将为您创建一个新表


如果您将其用作视图模型,请不要将其添加到此层。

要删除该表,您需要删除v_OrdersByser的数据库集

要解决此问题,请考虑将用户(或用户名)添加到Orders表中。
然后,您可以简单地根据用户名对所有订单进行排序,并使用linq从订单数据库集中检索每个用户名的订单数量。

您可以使用数据注释来完成此操作,如下所示:

[NotMapped]
public class v_OrdersByUser
{
    [Key]
    public string UserName { get; set; }
    public int OrdersCount { get; set; }
}
modelBuilder.Ignore<v_OrdersByUser>();
或者使用Fluent Api,如下所示:

[NotMapped]
public class v_OrdersByUser
{
    [Key]
    public string UserName { get; set; }
    public int OrdersCount { get; set; }
}
modelBuilder.Ignore<v_OrdersByUser>();
modelBuilder.Ignore();

但是当我在代码中调用视图时,我需要这一行。e、 g.
Dictionary ordersByUser=\u dbContext.v\u OrdersByUsers.ToDictionary(a=>a.UserName,a=>a.OrderCount)请查看此链接:也许您需要删除其中一个类别。”“订单”或“v_OrdersByser”。