我们正在从实体框架4切换到实体框架6.包管理器完成了它的工作,解决方案运行它的测试毫不费力.
但是在构建服务器上,我们得到以下运行测试的错误消息:初始化方法xxx.SetUp抛出异常.System.InvalidOperationException:
无法加载在具有不变名称"System.Data.SqlClient"的ADO.NET提供程序的应用程序配置文件中注册的实体框架提供程序类型"System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer".确保使用了程序集限定名称,并且程序集可供正在运行的应用程序使用.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882.
如果我们在构建服务器上本地打开解决方案,并在其中安装了Visual Studio,则测试将再次运行而不会出现错误.
我们将Cruise Control .Net与SVN结合使用,作为我们持续集成的工具.Build用于构建解决方案,测试与Ms Test一起运行.
有没有人遇到类似问题或对解决方案有任何想法?
异步操作似乎不适合我喜欢编写的流畅接口.Asynchrony如何与Fluent结合使用?
示例:我有两个先前返回的方法,MyEntity
但在更改为Async时效果不佳.在我异步他们之后,我必须await
完成任务的结果,但我必须为每个添加的步骤执行此操作:
MyEntity Xx = await(await FirstStepAsync()).SecondStepAsync();
Run Code Online (Sandbox Code Playgroud)
一定有更好的方法.
我正在使用Entity Framework 7 beta 5.我开始使用带有用户管理的mvc模板.在我的试验期间,我添加了几次迁移.
现在我想删除我的数据库,创建一个新的初始迁移并用它生成一个新的干净数据库.
但是,dnx ef命令没有我知道的命令,这将有助于此.我该怎么办?
我正在构建一个 .Net Core 3.1 控制台应用程序,我想在控制台日志记录中使用构建。关于 .net 日志记录的文章数不胜数,但我无法找到实际在控制台中写入的示例。
namespace test
{
class Program
{
static void Main(string[] args)
{
var serviceProvider = new ServiceCollection()
.AddLogging(config => config.ClearProviders().AddConsole().SetMinimumLevel(LogLevel.Trace))
.BuildServiceProvider();
//configure console logging
serviceProvider
.GetService<ILoggerFactory>();
var logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>();
logger.LogDebug("All done!");
Console.Write("Yup");
}
}
Run Code Online (Sandbox Code Playgroud)
它编译并运行,甚至向控制台写入“Yup”,但是“All done!” 未显示。控制台窗口中的输出:
我错过了什么?
这是对服务的处理:感谢 Jeremy Lakeman 修复:
static void Main(string[] args)
{
using (var serviceProvider = new ServiceCollection()
.AddLogging(config => config.ClearProviders().AddConsole().SetMinimumLevel(LogLevel.Trace))
.BuildServiceProvider())
{
//configure console logging
serviceProvider
.GetService<ILoggerFactory>();
var logger = serviceProvider.GetService<ILoggerFactory>()
.CreateLogger<Program>();
// run app …
Run Code Online (Sandbox Code Playgroud) 我需要在单个事务中完成大量的数据库处理,包括使用NHibernate进行的一些处理.
为了使所有内容在同一个事务中工作,我使用NHibernate的Session启动它,并为其中的其他工作登记命令.
一切顺利,直到我承诺.那时我得到了一个事务超时.
如何将NHibernate事务超时值设置得足够高?
我们使用FluentNHibernate.
对于我们的新项目,我们希望尽可能多地利用 asp.net mvc 5。这包括使用 AspNet.Identity 工具集进行用户管理。
我们正在使用以下版本:
"Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net46"
"Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net46"
Run Code Online (Sandbox Code Playgroud)
在我们之前推出自己的应用程序中,我们确保重置链接只能使用一次,并且它们会在一天左右的时间内过期。
AspNet.Identity 是否支持类似的东西?我在文档中找不到它。
为了通过我们的安全检查,链接至少应该过期。
如何做到这一点?
我正在使用NHibernate构建一个应用程序.因为我无法添加我当前版本的NHibernate的DLL(当框架4.0是目标时我无法添加引用).
我试图获得最新最好的www,这就是我现在所拥有的:
这些我可以参考和构建我的解决方案.我知道复制/加载dll.s有一些问题,所以我把它们作为部署项目.但运行时我(仍然)获得以下内容:
NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException:无法代理工厂类的配置期间加载类型"NHibernate.ByteCode.Castle.ProxyFactoryFactory,NHibernate.ByteCode.Castle".可能的原因是: - 未部署NHibernate.Bytecode提供程序程序集. - 用于初始化session-factory部分的"proxyfactory.factory_class"属性的typeName格式不正确.
解:
确认您的部署文件夹包含以下程序集之一:
NHibernate.ByteCode.LinFu.dll NHibernate.ByteCode.Castle.dll ---> System.TypeLoadException:方法IsProxy'型 'NHibernate.ByteCode.Castle.ProxyFactoryFactory' 从组件"NHibernate.ByteCode.Castle,版本= 3.0. 0.4000,Culture = neutral,PublicKeyToken = aa95f207798dfdb4'没有实现.
想什么?
为了回应Vijay Gill的回答,我决定采取不同的策略.
NUGet套餐,一站式商店,轻松更新!
那里有一个FluentNHibernate包.我安装了它,但我想这里也有一些不妥之处:
测试方法CoreDatabaseTests.CreateCoreDatabase抛出异常:
System.IO.FileLoadException:无法加载文件或程序集"NHibernate的,版本= 3.2.0.4000文化=中性公钥= aa95f207798dfdb4"或它的一个依赖.定位的程序集的清单定义与程序集引用不匹配.(从HRESULT异常:0x80131040)---> System.IO.FileLoadException:无法加载文件或程序集 'NHibernate的,版本= 3.1.0.4000文化=中性公钥= aa95f207798dfdb4' 或它的一个依赖.定位的程序集的清单定义与程序集引用不匹配.
我们正在.Net 2.0 Core 中开发一个类库。我们直接使用依赖注入。我们有一些服务想要从容器中解析为“Scoped”。
我们如何在代码中开始(和结束)这样的范围。如果能够在我们一些更复杂的测试场景中做到这一点,那就太好了。
注意:我们不使用“ASP.Net Core”
在我们的 .Net Core 3.1 项目中,我们使用 Serilog 进行日志记录
在我的测试设置中,我创建了一个 ServiceCollection,以便我可以使用服务集合 \ - 提供程序来更新我在测试中使用的类。我有一个同时使用 DbContext 和 Serilog 记录器的存储库。
using Serilog;
using Microsoft.EntityFrameworkCore;
namespace MyApp.Persistency
{
public class MyRepository : IMyRepository
{
private readonly DataContext _dataContext;
private readonly ILogger _logger;
public OpvragenOnbekendeBurgerRegistratieRepository(DataContext dataContext, ILogger logger)
{
_dataContext = dataContext;
_logger = logger;
}
...
}
Run Code Online (Sandbox Code Playgroud)
在我的测试课中:
[TestInitialize]
public void Initialize()
{
var diCollection =
new ServiceCollection()
.AddSingleton(new SqlConnectionOption(_connectionstring))
.AddDbContext<DataContext>(
options =>
{
options.UseSqlServer(_connectionstring);
}
)
...
xxx Add some kind of Serilog registration …
Run Code Online (Sandbox Code Playgroud) 我们使用MVC3,对于我们的单元测试,我们在单元测试中使用RhinoMocks.当请求开始时,我们检查它来自的域并将其与客户匹配.该客户存储在HttpContext.Items中.大多数控制器需要这些信息来完成他们的工作
var mocks = new MockRepository();
using (var controller = new TestController())
{
HttpContext context =
MockRepository.GenerateStub<HttpContext>();
Customer customer = new Customer { Key = "testKey" };
context.Items["Customer"] = customer;
controller.ControllerContext =
new ControllerContext {
Controller = controller,
RequestContext =
new RequestContext(
new HttpContextWrapper(context),
new RouteData()
)
};
...
Run Code Online (Sandbox Code Playgroud)
此代码示例基本上显示了所需的内容,但不允许存根,因为HttpContext是一个"密封"类.控制器接受一个HttpContextBase(有很多关于模拟这个),但它不公开Items属性.
想什么?甚至更好的解决方案;-)
c# ×4
.net-core ×3
mstest ×2
nhibernate ×2
.net ×1
asp.net-core ×1
async-await ×1
castle ×1
fluent ×1
http ×1
msbuild ×1
nuget ×1
rhino-mocks ×1
serilog ×1
transactions ×1