c# – 没有配置文件的实体框架跟踪提供程序包装器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 没有配置文件的实体框架跟踪提供程序包装器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1787字,纯文字阅读大概需要3分钟。
内容图文
![c# – 没有配置文件的实体框架跟踪提供程序包装器](/upload/InfoBanner/zyjiaocheng/815/2993733290ea4a32bea73cccbc3a92a8.jpg)
我想在SQLCE4数据库中使用Entity Framework Code第一种方法.一切似乎都很好,但我有调试SQL查询的问题.我发现http://efwrappers.codeplex.com/的EFTracing应该是我需要的,但我不知道如何在没有app.config文件的情况下使用它.我不是这种配置的忠实粉丝.我想只使用C#代码来设置和运行所有内容.我认为使用这样的代码应该没问题:
using (System.Data.Common.DbConnection c =
new EFTracingProvider.EFTracingConnection(
new System.Data.SqlServerCe.SqlCeConnection(conn)))
{
using (var context = new MyContext(c))
{
var a = from data in context.Projects select data;
}
}
但它不起作用.它抛出异常:
Unable to determine the provider name for connection of type
EFTracingProvider.EFTracingConnection’.
有没有简单的方法如何只在代码中正确创建包装连接?
解决方法:
我的问题的解决方案是遵循DbContext对象.
public class MyContext : DbContext
{
public MyContext()
: base(CreateConnection("Data Source=file.sdf",
"System.Data.SqlServerCe.4.0"), true)
{ }
public DbSet<Project> Projects { get; set; }
public static bool TraceEnabled = true;
private static DbConnection CreateConnection(string connectionString,
string providerInvariantName)
{
DbConnection connection = null;
if (TraceEnabled)
{
EFTracingProviderConfiguration.RegisterProvider();
EFTracingProviderConfiguration.LogToConsole = true;
string wrapperConnectionString = String.Format(@"wrappedProvider={0};{1}",
providerInvariantName, connectionString);
connection = new EFTracingConnection()
{
ConnectionString = wrapperConnectionString
};
}
else
{
DbProviderFactory factory = DbProviderFactories.GetFactory(providerInvariantName);
connection = factory.CreateConnection();
connection.ConnectionString = connectionString;
}
return connection;
}
}
所以现在我可以使用上下文,并根据TraceEnabled属性自动为包装或解包的SqlCe创建连接.
using (var context = new MyContext())
{
var a = context.Projects.FirstOrDefault();
}
内容总结
以上是互联网集市为您收集整理的c# – 没有配置文件的实体框架跟踪提供程序包装器全部内容,希望文章能够帮你解决c# – 没有配置文件的实体框架跟踪提供程序包装器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。