C# 在winforms中将数据加载到实体框架dll时出现问题

C# 在winforms中将数据加载到实体框架dll时出现问题,c#,winforms,entity-framework,C#,Winforms,Entity Framework,某个人提供给我的dll有问题。他们将实体框架与sql结合使用,他们为我提供了一个dll(用于类),我一辈子都无法将数据放入dll中的模型中 如果我从脚本中重新创建sql,我可以这样做(但是从代码中创建我自己的实体),但是我需要使用dll从db等中填充数据 我已经附加了dll和rwl(数据库连接) 有人能帮忙吗 这是我使用自己创建的entityframework模型为本地db编写的代码。但我需要使用dll的模型 string connStr = @"Data Source=DESKTOP-5T9

某个人提供给我的dll有问题。他们将实体框架与sql结合使用,他们为我提供了一个dll(用于类),我一辈子都无法将数据放入dll中的模型中

如果我从脚本中重新创建sql,我可以这样做(但是从代码中创建我自己的实体),但是我需要使用dll从db等中填充数据

我已经附加了dll和rwl(数据库连接)

有人能帮忙吗

这是我使用自己创建的entityframework模型为本地db编写的代码。但我需要使用dll的模型

string connStr = @"Data Source=DESKTOP-5T9EDLN;Initial Catalog=CRM;User Id=sa;Password=PW;Application Name=JobSupervisor;Connection Timeout=120;";

var db = new RWL.DataBase.cDB();

string stre = "select CJ.JobNumber, CJ.SupervisorID, CJ.CustomerName from   crm.tbljobs CJ      left join [Order] O on O.JobID = CJ.JobID       left join materials.OrderCode OC on OC.ID = O.OrderCodeID " +
    "left join TaskOrder TOR on TOR.OrderCodeID = OC.ID " +
    "left join Projects.Task T on T.ID = TOR.TaskID " +
    "left join Projects.ProjectTask PT on PT.TaskID = T.ID " +
    "left join Projects.Project P on P.ID =  PT.ProjectID " +
    "left join Projects.JobProject JP on JP.ProjectID = P.ID " +
    "where " +
    "PT.ActualStart is NULL " +
    "--and P.StartDate IS NOT NULL  " +
    "--and P.FinishDate IS NULL " +
    "order by CJ.JobNumber ";

db.ConnectionString = connStr;

DataTable project = new DataTable();

project = db.GetDataTable(stre);

gridControl1.DataSource = project;
我需要使用LINQtoSQL来创建查询,并使用dll来填充数据,而不是像上面代码中那样使用SQL

下面是我在winforms项目中创建新实体模型“model1”时使用的代码,但正如我所说,我需要使用它们的dll(“model.dll”),而不是我自己的dll

using (var db = new Model1())
        {

            var query = from b in db.tblSupervisors
                        orderby b.Surname
                        select b;

            foreach (var item in query)
            {
                var obj = 
                cboSupervisors.Properties.Items.Add(item.FirstName + " " + item.Surname);
            }
        }
编辑更新 当尝试在nuget软件包控制台中使用Enable Migration时,我现在得到“Job_Supervisor.DAL.tblJob::EntityType'tblJob'未定义键。请定义此EntityType的键。”


现在似乎正在使用dll,但它缺少键,这对他们提供此dll来说没有意义。那么,我缺少什么吗?

在您收到的dll中,检查应用程序数据库上下文是否可用。希望是这样。您可以通过它访问所有实体。确保已正确指定连接字符串。而且您已经将实体迁移到您自己的数据库中,您现在正在使用该数据库。(链接:)

由于您正在尝试加入多个实体,请查看哪些实体将对您大有好处

此外,如果由于任何原因无法更新所需的表,请尝试使用entity framework中可用的executesql命令

--更新--

您的DLL似乎只有模型类。就这样。您必须从头开始创建实体框架代码

1) 因此,在EntityFramework中,首先需要将EFDLL引用添加到项目中。在Visual Studio中,选择工具>Nuget软件包管理器>管理解决方案的Nuget软件包。搜索EntityFramework并安装nuget。您的解决方案中将包含一个引用dll

2) 创建ApplicationDbContext类。 创建一个新类并继承DbContext类

using System.Data.Entity;

namespace YourNamespace
{
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext()
            : base("Name=ApplicationDbContextConnection")
        {
        }

        public virtual DbSet<crm.tbljobs> Jobs { get; set; }
        public virtual DbSet<TaskOrder> TaskOrders { get; set; }
        public virtual DbSet<Projects> Projectz{ get; set; }
然后在代码中使用它。例如:

_context = new ApplicationDbContext();
//now you can access the models in the Model.DLL since you have already included it as a DBSet in the earlier step
//_context.Jobs
//_context.TaskOrders
//_context.Projectz
//This way you are using the models in the DLL

确保在运行项目之前将其迁移到自己的数据库中。链接在上面给出。要使用实体框架连接不同的表,请使用示例my second链接。祝你好运

谢谢你的回复。我看不到数据库上下文。该dll称为model.dll,我在引用中添加了它,它公开了表的类,但我无法将它们添加到列表等。它给了我错误-“是一种类型”我知道没有地方上传dllhere@NaasPrinsloo好的,看来DLL中只有模型类声明。因此,现在您必须在解决方案中做更多的工作,以使用实体框架访问db表。让我在我的答案中添加更多的代码/编辑,这样你就可以使用实体框架进行crud。我正忙着为你上传dll。希望你能理解我的意思,也许能帮上忙。感谢再次链接到files@NaasPrinsloo更新了答案对不起,我已经修改了标题!我还为您的问题添加了缺少的标签。这将使对EF或WinForms问题特别感兴趣的人更容易找到它。:-)
_context = new ApplicationDbContext();
//now you can access the models in the Model.DLL since you have already included it as a DBSet in the earlier step
//_context.Jobs
//_context.TaskOrders
//_context.Projectz
//This way you are using the models in the DLL