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