我正在使用内存数据库提供程序进行集成测试,但是我似乎无法更新记录。我已经针对真实的 SQL 数据库运行了相同的代码,并且一切都得到了很好的更新。这是我的测试装置代码。
测试夹具:
public class TestFixture<TStartup> : IDisposable
{
private readonly TestServer _testServer;
public HttpClient TestClient { get; }
public IDatabaseService DbContext { get { return _testServer.Host.Services.GetService<DatabaseService>(); } }
public TestFixture() : this(Path.Combine("src")) { }
protected TestFixture(string relativeTargetProjectPatentDir)
{
Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Testing");
var builder = new WebHostBuilder()
.ConfigureServices(services =>
{
services.AddDbContext<DatabaseService>(options =>
options.UseInMemoryDatabase("TestDB")
.EnableSensitiveDataLogging());
})
.UseEnvironment("Testing")
.UseStartup<Startup>();
_testServer = new TestServer(builder)
{
BaseAddress = new Uri("http://localhost:5010")
};
TestClient = _testServer.CreateClient();
TestClient.BaseAddress = _testServer.BaseAddress;
}
public void Dispose()
{
TestClient.Dispose();
_testServer.Dispose(); …Run Code Online (Sandbox Code Playgroud) 我有以下域实体:
public string Reference { get; private set; }
public int SupplierId { get; private set; }
public int BranchId { get; private set; }
public Guid CreatedBy { get; private set; }
public DateTime CreatedDate { get; private set; }
public Source Source { get; private set; }
public OrderStatus OrderStatus { get; private set; }
public decimal NetTotal { get; private set; }
public decimal GrossTotal { get; private set; }
private List<PurchaseOrderLineItem> _lineItems = new List<PurchaseOrderLineItem>();
public …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码来检索要播放给用户的视频文件:
public class VideoController : Controller
{
public VideoResult GetMP4Video(string videoID)
{
if (User.Identity.IsAuthenticated)
{
string clipLocation = string.Format("{0}\\Completed\\{1}.mp4", ConfigurationManager.AppSettings["VideoLocation"].ToString(), videoID);
using (FileStream stream = new FileStream(clipLocation, FileMode.Open))
{
FileStreamResult fsResult = new FileStreamResult(stream, "video/mp4");
VideoResult result = new VideoResult(ReadFully(fsResult.FileStream), "video/mp4");
return result;
}
}
else
{
return null;
}
}
private static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[32 * 1024];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > …Run Code Online (Sandbox Code Playgroud) 我正在一个使用实体框架6代码的项目中工作,我正在尝试找出从数据库中删除现已过时的表的正确方法。网上似乎没有太多有关此的信息,我知道我可以简单地从dbcontext中删除dbset,为其删除迁移文件,并从dbs中的migrations表中删除该行,但是我只是想看看是否那是唯一的方法,因为这似乎很混乱?
我觉得这很简单,但我有点挣扎.我正在为使用MVC 3的客户开发一个项目,该项目要求用户在使用该站点之前同意某些条件.我创建了一个标准的同意/不同意屏幕,该屏幕在首次进入网站时加载,但如果用户在网站的不同部分键入地址,他们可以绕过条件,例如www.test.com加载条件但是如果用户输入www.test.com/home他们绕过条件.
如何确保他们在网站上的任何其他地方之前已经同意这些条件?我一直在尝试一个会话变量,我认为这是可行的方法,但是有没有办法在每个页面请求上检查这个变量而不必对网站上的每个Controller Action进行检查?
我正在尝试找到一种方法来获取我正在处理的Android应用程序上当前显示的片段.我有一个启动视图加载片段,我需要做的是当用户点击后退按钮时显示弹出消息,但仅当使用点击某个片段的后退按钮时.例如:
片段A>导航到..>片段B>导航到...>片段C
如果用户单击片段C中的后退按钮,则不显示任何内容,并且用户按预期返回到片段B. 但是当用户点击片段B时,会显示一个弹出窗口,要求用户在允许继续回到片段A之前确认该操作,我希望这是有道理的.
我知道OnBackPressed(),我可以覆盖一个视图,但我不能在片段中触摸它.任何指针将不胜感激.