EF返回旧值

我在我的桌面应用程序中使用EF6 + WPF和MVVM设计模式。 我也使用Autofac作为DI容器。 我阅读了很多关于EF上下文生命周期管理的内容,并且我决定只为单一视图模型实例提供一个EF上下文实例。 我发现了一些关于这种方法的有趣文章,所以我认为这只是管理EF上下文的好方法。 我使用Autofac来管理EF生命周期,因此每次创建新的视图模型时,都只会创建一个新的EF上下文。 但当然,我遇到了一个问题。 我的大多数EF查询都运行良好,但以下查询始终返回旧的(缓存)值。 每次按“执行”按钮时都会调用此查询,因此每个视图/视图模型都有很多执行 this.context.someTable.Where(arg => arg.value == “value”).Single(); 我知道我总是可以使用以下代码重新加载实体 this.context.Entry(entity).Reload(); 但对我来说这不是一个好的解决方案。 我也知道,如果我处理当前上下文并在下一个查询之前重新创建,我将始终接收当前值。 但是这种方法与每种视图模型方法的一个上下文冲突。 我应该修复/更改什么以避免EF缓存问题并且仍然具有良好的性能。

在Windowsapp store的TextBlock和PasswordBox中垂直和水平居中文本

我试图将文本居中在TextBlock和PasswordBox中。 在TextBlock中,我使用TextAlignment属性水平居中文本,但它仍然靠近顶部。 如何垂直居中? 而在PasswordBox中没有与文本对齐关联的属性,如何实现这一点?

如何使用Autofac与方法连接事件?

是否可以通过接口/类(通过构造函数和属性注入)将事件连接到具有Autofac的方法而不是整个对象。 我想绑定在function级别而不是类型级别。 以编程方式我希望完成以下工作(在C#中): someType.Output += someOtherType.Input; 例如,Spring.net支持以下构造来实现: Autofac能够做到这一点以及如何做到这一点? 是否可以将xml配置用于此类任务?

虚拟导航属性和多租户

我有一个标准的DbContext ,代码如下: public DbSet Interests { get; set; } public DbSet Users { get; set; } 我最近通过创建一个包含以下内容的TenantContext来实现多租户: private readonly DbContext _dbContext; private readonly Tenant _tenant; public TenantContext(Tenant tenant) : base(“name=DefaultConnection”) { this._tenant = tenant; this._dbContext = new DbContext(); } public IQueryable Users { get { return FilterTenant(_dbContext.Users); } } public IQueryable Interests { get { […]

如何实现Repository FindAll()方法?

我有以下存储库模式。 要求是“查找所有者姓名为Lijo的所有帐户”。 所以,我需要编写一个FindAll函数。 怎么写这个function? 限制是: 1)客户端“BankAccountService”不应使用“DBML_Project”中的类。 2)我们不应该使用GetAll方法来退出完整的帐户列表,然后进行过滤。 注意:我在处理多态性问题时遇到了这个问题:ORM实体是域实体还是数据实体? 码 namespace ApplicationService_Bank { public class BankAccountService { RepositoryLayer.ILijosBankRepository accountRepository = new RepositoryLayer.LijosSimpleBankRepository(); public void FreezeAllAccountsForUser(string userName) { //Should not use assembly ‘DBML_Project’. IEnumerable accountsForUserWithNameLIJO = null; //accountsForUserWithNameLIJO = accountRepository.FindAll(p => p.BankUser.Name == “Lijo”); } } } namespace RepositoryLayer { public interface ILijosBankRepository { List GetAll(); IEnumerable […]

C#当我准备好程序结束时,如何停止tcpClient.Connect()进程? 它就在那里坐了10秒钟!

这是我的第一个问题之一。 每当我退出程序时,tcpClient.Connect()都会永远关闭。 我尝试了很多东西,但似乎都没有。 看看CreateConnection()线程,如果客户端还没有连接……我关闭程序,它需要永远关闭。 如果已连接,则立即关闭。 我知道这可以通过某种超时技巧来完成,但我尝试了一些,但没有一个工作。 如果可以,请提供代码示例。 另外,C#在读取/写入实际字节时是否有任何好的教程用缓冲区而不是只有masterServer.writeLine()和masterServer.readline()的版本,或者它们都同样有效吗? 如果你看到其他任何东西可以帮助我改善这一点……无论如何,请继续。 我正在努力教自己如何做到这一点,我没有任何帮助,所以如果你看到它,不要让我继续做错事! 多谢你们! using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO; namespace RemoteClient { public partial class Form1 : Form { private int MyPort = 56789; private IPAddress myIp = IPAddress.Parse(“210.232.115.79”); […]

在C#中销毁struct对象?

我有点困惑的是,在C#中只有引用类型被垃圾收集。 这意味着GC只选择内存解除分配的引用类型。 那么值类型会发生什么呢?因为它们也会占用堆栈上的内存?

为OnScroll创建事件处理程序以进行Web浏览器控制

有没有人成功地在Web浏览器组件中捕获鼠标滚动事件? 我有两个网页浏览器控件我想同时滚动。 但是没有针对Web浏览器的滚动事件。 我想在下面创建一个类似的事件? 有没有人做过或看过这个? private void webCompareSQL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { Document.Window.AttachEventHandler(“OnScroll”); } 在这里,我将调用我的事件并继续执行代码。 private void windowEvents_OnScroll() { int nPos = GetScrollPos(webCompareSQL.Handle, (int)ScrollBarType.SbVert); nPos <<= 16; uint wParam = (uint)ScrollBarCommands.SB_THUMBPOSITION | (uint)nPos; SendMessage(WebPrevSQL.Handle, (int)Message.WM_VSCROLL, new IntPtr(wParam), new IntPtr(0)); } 我找到了这段代码,但不知道如何使用它。 这是一个事件。 webCompareSQL.Document.Window.Scroll

格式化不同文化中的数字

假设文化不变 ,是否可以以格式定义不同的组分隔符 – 而不是逗号? Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; Console.WriteLine(String.Format(“{0:#,##0}”, 2295)); 输出: 2,295 期望的输出: 2.295 不变文化是一项要求,因为来自许多不同语言环境的货币都使用格式字符串格式化,这些格式字符串是用户定义的。 即丹麦他们已经将价格格式定义为“{0:0}, – ”,而对于爱尔兰,它可能是“€{0:#,## 0}”。

401未经授权使用Yahoo OAuth

我的下面的代码每次都返回401 Unauthorized错误: HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(“http://query.yahooapis.com/v1/yql?q=select%20fields.value%20from%20social.contacts%20where%20guid%3Dme&diagnostics=false”); request.Headers.Add( “Authorization: OAuth ” + “realm=\”” + “yahooapis.com” + “\”,” + “oauth_consumer_key=\”” + ConfigurationManager.AppSettings[“yahoo_oauth_consumer_key”] + “\”,” + “oauth_nonce=\”” + Guid.NewGuid().ToString() + “\”,” + “oauth_signature_method=\”” + “PLAINTEXT” + “\”,” + “oauth_timestamp=\”” + ((DateTime.UtcNow.Ticks – new DateTime(1970, 1, 1).Ticks) / (1000 * 10000)).ToString() + “\”,” + “oauth_token=\”” + accessToken.TokenValue + “\”,” […]