如何在entity frameworkDbContext中使用dependency injection?

我目前正致力于为网站添加新function。 我有一个使用EF6创建的DbContext类。 该网站使用主布局,其中根据请求的页面呈现子布局。 我想使用dependency injection来访问Sublayouts中的DbContext。 通常,我会使用Controller来处理调用,但是,我想在这种情况下跳过它。 此外,我希望保持实施的灵活性,以便添加新的DbContexts,我将能够轻松使用它们。 我在考虑创建一个“IDbContext”接口。 我将使用新界面(让我们说“IRatings”)实现这个界面。 我是以正确的方式去做的吗? 有什么想法吗?

将XAML中的标签文本设置为字符串常量

我有一个单独的字符串常量,我必须在几个不同的XAML布局中重复使用,所以我不想复制它,而是将它绑定到一个常量。 我有一个在C#中定义字符串的类: public static class StringConstants { public static string MyString { get { return “SomeConstant”; } } } 我希望能够通过XAML设置值,如下所示: 这可以实现吗? 我已经搜索了一些示例,但我只发现了代码隐藏的样本,我想知道是否有更简单的XAML解决方案,如果我知道我只需要设置一次值在一个永远不会改变的字符串值上。

为什么我得到“类型参数必须是无效的……”错误?

我将尝试缩短此代码示例: public interface IThing { //… Stuff } public class Thing1 : IThing { } public class Thing2 : IThing { } public interface IThingView { ICollection ViewAll(); } public class ThingView : IThingView { ICollection ViewAll() { return new List(); } // There’s a big operation here } public interface IThingViewerFactory { public IThingView […]

参数varbinary数据类型中的空值

如何在参数varbinary数据类型中添加空值? 当我执行以下代码时: using (SqlConnection myDatabaseConnection1 = new SqlConnection(myConnectionString.ConnectionString)) { using (SqlCommand mySqlCommand = new SqlCommand(“INSERT INTO Employee(EmpName, Image) Values(@EmpName, @Image)”, myDatabaseConnection1)) { mySqlCommand.Parameters.AddWithValue(“@EmpName”, textBoxEmpName.Text); mySqlCommand.Parameters.AddWithValue(“@Image”, DBNull.Value); myDatabaseConnection1.Open(); mySqlCommand.ExecuteNonQuery(); } } 我得到以下System.Data.SqlClient.SqlException : 不允许从数据类型nvarchar到varbinary(max)的隐式转换。 使用CONVERT函数运行此查询。

php md5算法,给出与c#相同的结果

我在C#中有一个散列算法,简而言之,它是: string input = “asd”; System.Security.Cryptography.MD5 alg = System.Security.Cryptography.MD5.Create(); System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding(); byte[] hash = alg.ComputeHash(enc.GetBytes(input)); string output = Convert.ToBase64String(hash); // outputs: eBVpbsvxyW5olLd5RW0zDg== Console.WriteLine(output); 现在我需要在php中复制这种行为, $input = “asd”; $output = HashSomething($input); echo $output; 我怎样才能实现它? 我检查了 MD5 utf8_decode 函数utf8_encode BASE64_ENCODE BASE64_DECODE url_decode 但我注意到php md5最终没有得到==我错过了什么? 注意 :我无法更改C#行为,因为它已经实现,并且使用此算法将密码保存在我的数据库中。

Visual Studio 2010调试器中的上下文变量

对于面向.NET 4.0的C#控制台应用程序,Visual Studio 2010调试器中的局部变量脱离上下文我遇到了一个非常奇怪的问题。 我在SO上搜索过其他类似的问题,但是虽然有些人有相同的症状,但似乎没有一个直接适用于这个问题(它们似乎都有其他根本原因)。 问题是,对于某些变量(但不是全部),我没有获得带有它们值的工具提示,它们没有出现在Locals窗口中,并且我得到“当前上下文中不存在名称’xyz’”如果我将它们添加到Watch窗口。 它似乎会影响一些变量而不影响其他变量,我无法弄清楚一个模式(它似乎不是基于成员与本地,类与结构或任何其他区别)。 我已经重新启动了我的计算机和Visual Studio,validation了我是一个干净的Debug版本,确保调试框架是正确的,确保刷新监视屏幕中的变量,并尝试各种法术和咒语。 我在下面添加了一个屏幕截图( http://i.stack.imgur.com/JTFBT.png上的更大版本)。 有什么想法吗? 编辑: 添加一些其他信息: 这个问题是可以重复的。 即使在完全关闭并重新启动Visual Studio之后,完全相同的变量也可以工作或不起作用。 这让我相信实际上存在系统性问题,而不仅仅是内存损坏或其他问题。 我还发现它似乎与try-catch块有关。 如果我将断点放在try语句之外,我可以正常看到任何范围内的变量。 一旦执行点进入try语句,try块之外的所有变量都将变得不可访问,我只能访问try语句中的变量。 这几乎就像调试器将try块视为一个单独的方法一样(尽管你可以看到代码/编译器仍然可以访问范围内的变量)。 有没有人见过这种行为? 另一个编辑: 我(部分)收回了我所说的关于try-catch被怀疑的内容 – 看起来在代码的这一部分中,调试器展示了这个奇怪的东西在任何封闭块的上下文之外。 例如,如果我在屏幕截图中的foreach语句中直接设置断点,我可以在每次迭代时看到“port”变量值,但是foreach语句之外的变量都没有(一旦我进入foreach块就会消失) 。 然后,只要您进入try块,“port”变量就会突然消失。 这变得非常奇怪。 此外,根据要求,整个方法的代码如下。 private void ConfigureAnnouncerSockets(XDocument configDocument) { XElement socketsElement = configDocument.XPathSelectElement(“/Configuration/Network/AnnouncerSockets”); bool useDefault = true; if (socketsElement != null) { //Use the default announcers? (they […]

我可以在Rhino-Mocks 3.6中使用AAA语法测试方法调用顺序吗?

如果Method1在Rhino-mocks 3.6中调用1st,然后调用After后面的Method2,然后使用AAA语法调用Method3,是否可以测试以下示例? // Assert var mock = MockRepository.GenerateMock(); // Act myObject.Service = mock; // How should I change this part to ensure that Rhino Mocks check the call order as well? mock.AssertWasCalled(m=>m.Method1()); mock.AssertWasCalled(m=>m.Method2()); mock.AssertWasCalled(m=>m.Method3());

动态面板元素添加和滚动条

我写了一个函数来动态地向“面板”添加元素。 public int State; public Point Point = new Point(0, 0); public void DialogAdd(string message, string author) { var d = new DialogMessage(); if(State == 0) { d.BackColor = Color.FromArgb(255, 237, 241, 245); State = 1; } else { State = 0; } d.Controls[“name”].Text = author; d.Location = new Point(0, Point.Y); d.Controls[“msg”].Text = message; Point.Y […]

ASP.NET machinekey在代码中设置键

对于IIS托管的ASP.NET MVC 4网站,我想在运行时在代码中动态调整机器密钥。 机器密钥,加密和validation密钥以及要使用的算法都存储在数据库中。 我想在应用程序启动期间注入这些值而不是从web.config文件中读取值,而是让系统使用它们。 有没有办法实现这一点,而不必更改web.config (只更改内存配置)? 我试过访问配置部分,但它被标记为只读并且也是密封的,所以我不能覆盖IsReadOnly() 。 但是,对我来说,有一个setter是一个指示器,可能有一种方法可能删除readonly标志。 var configSection = (MachineKeySection)ConfigurationManager.GetSection(“system.web/machineKey”); if (!configSection.IsReadOnly()) { configSection.ValidationKey = _platformInfo.MachineKey.ValidationKey; configSection.DecryptionKey = _platformInfo.MachineKey.EncryptionKey; … } 有没有办法实现这个目标? 我能看到的唯一选择是使用像AppHarbor这样的自定义方法,但是如果可能的话,我宁愿坚持使用内置方法。 如果有人问为什么我想这样做,原因是,这是针对在webfarm中运行的大量相同网站。 因此,必须具有非自动生成的密钥(每台服务器上必须相同)。 此外,每个网站都应该是隔离的,不应该共享相同的密钥。 由于所有网站的物理表示相同,因此它们共享相同的物理位置。 这就是web.config文件不能包含特定于应用程序的设置的原因。 编辑:至少确认是否根本不可能,这将是非常有帮助的。 如上所述,可以使用自定义validation和加密方法,这些方法将完全避免使用机器密钥设置。 谢谢。

匿名类型属性设置器

为什么匿名类型没有属性设置器? var a = new { Text = “Hello” }; a.Text = “World”; //error