我们在设计多线程实体框架驱动的应用程序时遇到一些麻烦,并希望得到一些指导.我们在不同的线程上创建实体,将实体添加到集合中,然后将数据绑定到各种wpf控件.ObjectContext类不是线程安全的,所以管理它我们基本上有两个解决方案:
解决方案1具有单个上下文并小心使用锁定以确保没有2个线程同时访问它.这实现起来相对简单,但要求上下文在应用程序期间保持活动状态.像这样打开一个上下文实例是不是一个坏主意?
解决方案2是按需创建上下文对象,然后立即分离对象,然后将它们保存在我们自己的集合中,然后重新附加它们以进行任何更新.但是这有一些严重的问题,因为当分离对象时,它们会丢失对导航属性对象的引用.还有一个问题是,2个线程仍然可以尝试访问单个对象,并且都尝试将()附加到上下文.此外,每次我们想要访问实体导航属性时,我们都需要提供新的上下文.
问:两种解决方案中的任何一种都有效,如果不是,您如何建议我们解决这个问题?
嗨首先我知道之前已经提到了类似的问题,但它们现在已经过时了,我使用的是Visual Studio 2015 rtm和ASP.NET 5 beta 6.
我正在尝试将正常(即非vnext)类库项目的引用添加到我的vnext Web应用程序中.如果我按照以下步骤操作:
创建一个新的Web应用程序项目
从project.json中删除"dnxcore50"框架
为普通类库添加新项目
手动将类库项目移动到/ src文件夹中(否则我收到错误"依赖MyClassLibrary1> = 1.0.0-*无法解析.")
添加对此类库的引用
现在它构建正常,但如果我尝试添加"使用MyClassLibrary1",它说MyClassLibrary1在当前上下文中不存在.
如果我然后将类库更改为目标.NET 4客户端配置文件(默认情况下为4.6)它可以正常工作,但.NET 4已满或4.5不起作用.我需要它是4.5或更高,因为我需要引用需要它的各种包.理想情况下,一切都只是针对4.6.
这是我的project.json文件:
{
"webroot": "wwwroot",
"userSecretsId": "aspnet5-WebApplication2-6767111e-0eba-42a4-9d68-4b6c20767518",
"version": "1.0.0-*",
"dependencies": {
"EntityFramework.SqlServer": "7.0.0-beta6",
"EntityFramework.Commands": "7.0.0-beta6",
"Microsoft.AspNet.Mvc": "6.0.0-beta6",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta6",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Google": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta6",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta6",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta6",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta6",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta6",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta6",
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta6",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta6",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta6",
"Microsoft.Framework.Logging": "1.0.0-beta6",
"Microsoft.Framework.Logging.Console": "1.0.0-beta6",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta6"
},
"commands": {
"web": "Microsoft.AspNet.Hosting …Run Code Online (Sandbox Code Playgroud) 我希望选择"记住我"选项的用户长时间(例如3个月,或直到他们清除cookie)登录我的网站.目前我必须每20分钟左右再次登录.
我正在使用ASP.NET 5/vnext/mvc 6(beta 7).我的网站基于Visual Studio作为模板项目的代码.我知道其他问题也有类似的问题,但我不知道它在新的ASP.NET中是如何应用的.
我在我的Startup.ConfigureServices方法中有这个代码,但它似乎没有效果:
services.ConfigureIdentityApplicationCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(90);
options.SlidingExpiration = true;
options.AutomaticAuthentication = true;
options.LoginPath = new PathString("/Account/Login");
options.LogoutPath = new PathString("/Account/LogOff");
});
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑
使用fiddler,登录时的响应包含此cookie数据:
响应发送的642个字节的Cookie的数据:设置Cookie:.AspNet.Microsoft.AspNet.Identity.Application = CfDJ8P8cKnxL87ZMjh0duvm7eKbBbA_vf1ECr95KgPd4MNsKBj0_SljMLWLPNzNFIr4PQTG1ZjVyQ7cfFMEehcI5JZrOlVVHfZ_SD29jN1vdhsdUMPTysvhvo6RlnDHq5YwFdnTNqw-_ia4cGWk8Iw05PJHsQ0mws_e0DzWpX088kysJuU0LcNoyPA22nyMoGrK1RP1Bax_XwixdO6jLQx164lqRqVYi6ys3VVPJP0aLOg3w4CovxcAemgMQEhAcNUdP6Q0rnBmfBn7FZR_kNEgXoiMkNNgBDwUuVyiweU3fw5rzE-mmBPo2IYBJWRoaSzNLcUV5gSTpDT2n8IMh4nPlTzGrFIUgCpHDhpmXJJ3EneC5i-eVaLGeQG1FAIBZZ-oNlolwdkXi63bXpHuRME9cnYLTm3cDpfooXKq0_Rn7ls4lN-wCF5kGvz6ALruUaPWNERvcKlccix7o3B_-rj1q5yhn1bKO2vumArRaq-QpHb2djaN84IdFBOw1CSJLpeQKeP3qrdJD8-GYl6chvbJ4FbA; expires =周一,2016年1月4日10:40:35 GMT; 路径= /; 仅Http
你可以看到最后到期时间是90天,这是正确的,但它仍然会在20分钟左右登出我.
在 ListView 中,添加和删除项目是通过一个漂亮的动画完成的。然而,当我移动一个项目(或对集合进行排序)时,没有很好的动画,它似乎只是重置。
有谁知道我如何将物品移动到新位置的动画?我在 ios 应用程序中看到过这种行为,在 UWP 中肯定有可能吗?
你可以在这个演示中看到删除动画很好,重新排序不是。
简单的代码示例:
xml
<Page
x:Class="ExampleApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ExampleApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<Button Name="btnReorder" Content="Reorder" Click="btnReorder_Click" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="32" />
<Button Name="btnRemove" Content="Remove" Click="btnRemove_Click" HorizontalAlignment="Left" Margin="100,10,0,0" VerticalAlignment="Top" Height="32" />
<ListView Name="list" Margin="0,200,0,0">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:MyData">
<Rectangle Width="100" Height="20" Fill="{x:Bind Path=Brush}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)
代码
using System.Collections.ObjectModel;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
namespace ExampleApp
{
public sealed partial class MainPage : Page
{
ObservableCollection<MyData> …Run Code Online (Sandbox Code Playgroud) .net ×3
asp.net ×2
asp.net-core ×2
c# ×2
asp.net-mvc ×1
entity ×1
frameworks ×1
uwp ×1
xaml ×1