Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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# 如何首先将遗留类与EF代码一起使用?_C#_Entity Framework_Ef Code First - Fatal编程技术网

C# 如何首先将遗留类与EF代码一起使用?

C# 如何首先将遗留类与EF代码一起使用?,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我有大量用C#编写的遗留类,我希望首先与EF代码一起使用 首先需要对这些类做什么才能使它们对EF代码可用 如果您的类是POCO实体类,那么首先使用实体框架代码非常容易。FK关系需要在具有这些关系类型的实体中定义。例如: public virtual ICollection<CmsCategoryType> CategoryTypes { get; set; } public class CampaignContext : DbContext { public DbSet

我有大量用C#编写的遗留类,我希望首先与EF代码一起使用


首先需要对这些类做什么才能使它们对EF代码可用

如果您的类是POCO实体类,那么首先使用实体框架代码非常容易。FK关系需要在具有这些关系类型的实体中定义。例如:

public virtual ICollection<CmsCategoryType> CategoryTypes { get; set; } 
public class CampaignContext :  DbContext
{
    public DbSet<CmsContent> Contents { get; set; }
    public DbSet<CmsCategoryType> CategoryTypes { get; set; }
}
<add name="CampaignContext" connectionString="Data Source=localhost\SQLEXPRESS;
                            Initial Catalog=Campaigns;
                            Integrated Security=True" 
                            providerName="System.Data.SqlClient"/>
公共虚拟ICollection类别类型{get;set;} 其次,您需要创建一个DBcontext类,它将为您连接所有内容。例如:

public virtual ICollection<CmsCategoryType> CategoryTypes { get; set; } 
public class CampaignContext :  DbContext
{
    public DbSet<CmsContent> Contents { get; set; }
    public DbSet<CmsCategoryType> CategoryTypes { get; set; }
}
<add name="CampaignContext" connectionString="Data Source=localhost\SQLEXPRESS;
                            Initial Catalog=Campaigns;
                            Integrated Security=True" 
                            providerName="System.Data.SqlClient"/>
公共类活动上下文:DbContext
{
公共数据库集内容{get;set;}
公共数据库集类别类型{get;set;}
}
预定义连接字符串也是一个好主意。例如:

public virtual ICollection<CmsCategoryType> CategoryTypes { get; set; } 
public class CampaignContext :  DbContext
{
    public DbSet<CmsContent> Contents { get; set; }
    public DbSet<CmsCategoryType> CategoryTypes { get; set; }
}
<add name="CampaignContext" connectionString="Data Source=localhost\SQLEXPRESS;
                            Initial Catalog=Campaigns;
                            Integrated Security=True" 
                            providerName="System.Data.SqlClient"/>

现在,当您第一次运行应用程序时,entity Framework code first将转到连接字符串中指定的sql server使用预定义的名称创建数据库,获取实体类并创建具有主键和外键关系的表,通常通过dbcontext为您连接所有内容

需要注意的是,连接字符串名称和dbcontext应该具有相同的名称,按照约定,dbcontext会查找匹配的名称。此外,你可能会错过一些你认为你应该拥有的关系。同样,这是需要在相关实体之间来回设置的虚拟ICollection


希望这对您的项目有所帮助,祝您好运。

您所说的遗留类是什么意思?还有用于这些类的数据库表吗?它们不是实体类。它们只是普通类,用于遗留产品中。如果您只是在谈论类库或实用性类,那么没有什么特别的事情要做,只需像对任何其他类型的应用程序一样引用它们。