Lys*_*ard 1 c# wpf entity-framework-6
我知道之前已经多次询问过这个问题 - 并且答案基本相同.但在这些情况下,当更多项目使用相同的实体并且连接字符串不存在于所有配置文件中时,问题通常会发生.在我的情况下,所有都在同一个项目中.连接字符串存在于App.config中.我在XAML中使用viewmodel:
<Window x:Class="ReportMapping.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ReportMapping"
Title="Title" Height="477.22" Width="836.631">
<Window.DataContext>
<local:CompanyCollectionViewModel/>
</Window.DataContext>...
Run Code Online (Sandbox Code Playgroud)
我从我的ViewModel调用我的实体:
namespace ReportMapping
{
class CompanyCollectionViewModel
{
NAV_HelpersEntities dbContext = new NAV_HelpersEntities();
Run Code Online (Sandbox Code Playgroud)
如果我调用实体形式的其他地方,我的viewmodel它的工作原理.在代码隐藏的示例绑定中.
connectionstring(如果在MainWindow.cs中使用,则可以使用):
<connectionStrings>
<add name="NAV_HelpersEntities" connectionString="metadata=res://*/Mapping.csdl|res://*/Mapping.ssdl|res://*/Mapping.msl;provider=System.Data.SqlClient;provider connection string="data source=NAV\;initial catalog=NAV_Helpers;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
这里是NAV_HelpersEntities构造函数:
public partial class NAV_HelpersEntities : DbContext
{
public NAV_HelpersEntities()
: base("name=NAV_HelpersEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<R_Component> R_Component { get; set; }
public virtual DbSet<R_Configuration> R_Configuration { get; set; }
public virtual DbSet<R_Masterdata> R_Masterdata { get; set; }
public virtual DbSet<R_Type> R_Type { get; set; }
public virtual DbSet<View_NAV_Entries> View_NAV_Entries { get; set; }
public virtual DbSet<View_R_GetAccounts> View_R_GetAccounts { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我调试CompanyCollectionViewModel构造函数时,我可以看到正在填充我的ObservableCollection.
我在这做错了什么?
更新:好吧,我现在通过将connectionstring添加到machine.config来实现它.这是有效的 - 但我想这只是一个解决方法,我将不得不解决.谢谢你的意见.
小智 5
我找到了一个简单的解决方案.调用实体构造函数的基础构造函数时,必须从参数字符串中删除"name =".所以你必须改变这个:
public partial class SalesContext : DbContext
{
public SalesContext()
: base("name=SalesContext")
{
}
Run Code Online (Sandbox Code Playgroud)
对此:
public partial class SalesContext : DbContext
{
public SalesContext()
: base("SalesContext")
{
}
Run Code Online (Sandbox Code Playgroud)
在此处查看:实体框架MVVM Walk Through 1