我正在尝试制作一个插件,它将使用EF6.1和SQLite用于我无法更改App.config的应用程序,因此需要在代码中设置所有配置和连接字符串.
我发现这个答案在使用Entity Framework 6和SQLite时看起来很有前途
所以现在我有一个这样的配置类:
public class CollectionDbConfiguration : DbConfiguration
{
public CollectionDbConfiguration()
{
SetProviderServices("System.Data.SQLite"(DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices)));
SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance);
SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经确认在第一次创建上下文之前会遇到这种情况并且所有这些都返回值.
我的上下文看起来像这样
public class MyContext : DbContext
{
public MyContext(string connectionString)
: base(connectionString) { }
public DbSet<MyEntity> MyEntities { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一些代码称之为:
var context = new MyContext("Data Source = mytest.db; Version = 3;");
var entities = context.MyEntities.ToList();
Run Code Online (Sandbox Code Playgroud)
当我尝试运行代码时,看起来上下文假设连接字符串是针对SQL Server的,因为它给了我:
不支持关键字:'版本'.
如果我删除它然后我得到一个错误,它无法连接,它显然尝试连接到SQL Server数据库.
我尝试通过添加构造函数传递SQLite连接:
public MyContext(DbConnection connection)
: base(connection, contextOwnsConnection: true)
{ }
Run Code Online (Sandbox Code Playgroud)
并用它调用它:
var context …Run Code Online (Sandbox Code Playgroud) 我试图使用ETW和Microsoft-Windows-TCPIP提供程序和Microsoft TraceEvent库捕获计算机上TCP连接的实时数据.
您可以从中获得的值之一是TCB,它是一个数字.
我知道什么是TCB(传输控制块),但我不知道数字意味着什么,我能从清单中找到的最好的是这是一个指针.
我真正想要做的是使用它来读取实际的TCB并获取它所连接的地址.我知道我可以从连接和断开事件中获取一个地址,但由于各种原因,我可能并不总是有这些,并且发送事件只包含TCB.
编辑:
我找到了许多API,允许您阅读TCB表 https://msdn.microsoft.com/en-us/library/windows/desktop/aa366026(v=vs.85).aspx
然而,我真正想做的是使用从ETW返回的TCB编号,然后调用API并获取TCB信息
附加编辑:
我想在ETW事件中使用进程和线程ID来确定进程和线程正在进行通信的地址.
附加编辑:
当我可以获得具有收件人和端口的连接事件时,一切正常,我可以使用TCB编号将其连接到后续发送和断开连接.我需要针对特定情况的解决方案,其中我没有连接事件,只有发送.
我们已经开始使用Ninject版本2作为我们的IoC容器以及通过命名约定解析的扩展.我们还使用log4net进行日志记录.
我想要的是让Ninject记录它找到的所有依赖项以及将它们解决的依赖项,最好是在应用程序启动时.
我找到了日志记录扩展,但找不到有关如何使用它来获取此文档或示例.
编辑:
因为这里请求的是使用log4net在启动时记录默认绑定的类
public class DefaultBindingGeneratorWithLogging:IBindingGenerator {private readonly IKernel kernel;
/// <summary>
/// Initializes a new instance of the <see cref="DefaultBindingGeneratorWithLogging"/> class.
/// </summary>
/// <param name="kernel">The kernel.</param>
public DefaultBindingGeneratorWithLogging(IKernel kernel)
{
this.kernel = kernel;
}
/// <summary>
/// Creates the bindings for a type.
/// </summary>
/// <param name="type">The type for which the bindings are created.</param>
/// <param name="bindingRoot">The binding root that is used to create the bindings.</param>
/// <returns>
/// The syntaxes for the created bindings …Run Code Online (Sandbox Code Playgroud) 我最近不得不回到处理webforms代码,并且在尝试更新显示调查回复列表的现有页面时遇到了问题.
我有一个ListView显示已经回答调查的人的详细信息.当您单击该行进入编辑模式的行中的图标并将其信息(名称,电子邮件等)显示为输入框时.
到目前为止一切顺利,现在我需要为该调查和那个人添加问题和答案.写出来很容易,但是当回发发生时,行返回到ItemTemplate并且控件消失了.
我知道使用动态控件你应该在Page_Init中创建,所以webforms可以重新绑定它们,但是在这里直到ListItem ItemEditing事件才创建控件,并且在ItemUpdating事件中保存数据.
我坚持认为如何在生命周期的正确位置使用正确的数据将控件放在正确的位置.现在我正试图从Request.Form中提取值,但是使用CheckboxList,很难弄清楚已经选择了什么.
编辑:应该实际运行的新示例
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QuestionExample.aspx.cs" Inherits="QuestionExample" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<table>
<asp:ListView runat="server" ID="LV" OnItemEditing="LV_OnItemEditing" OnItemUpdating="LV_OnItemUpdating">
<LayoutTemplate>
<tr>
<td><asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder></td>
</tr>
</LayoutTemplate>
<ItemTemplate>
<asp:LinkButton ID="EditButton" runat="server" CommandName="Edit" Text="Edit"/>
ID: <asp:Label runat="server" ID="lblLeadID" Text="<%# ((Lead)Container.DataItem).LeadID %>" /> Name: <%# ((Lead)Container.DataItem).Name %><br/>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update" Text="Update" />
ID: <asp:Label runat="server" ID="lblLeadID" Text="<%# ((Lead)Container.DataItem).LeadID %>" /> <asp:Label runat="server">Name</asp:Label>
<asp:TextBox runat="server" id="tbName" Text="<%# ((Lead)Container.DataItem).Name …Run Code Online (Sandbox Code Playgroud) 我正在努力将 OData v4 查询支持添加到继承自 ApiController 而不是 ODataController 的控制器上的方法。虽然解决方案中有一个有效的 OData 模型,但有一些端点并不真正属于该模型,但查询的功能将很有用。
我看过一些文章建议我可以只返回 IQueryable 并使用 EnableQuery。
这是我的示例代码:
public class TestController : ApiController
{
[HttpGet]
[EnableQuery]
public IQueryable<TestObject> Events()
{
var result = new[] { new TestObject { Id = "1" } }.AsQueryable();
return result;
}
}
public class TestObject
{
public string Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当调用 /Test/Events 时,我得到的只是 406 Not Acceptable,这是我在处理 OData 时遇到的很多情况,这通常意味着我返回了 OData 框架不喜欢的东西。我从来没有能够从框架中获得更多信息(我认为这是一个重大失败)来解释为什么它不喜欢它,并且过去只能通过反复试验来解决它们。
有没有人让这个设置工作,如果是的话如何?
Or any suggestions on debugging the 406 response?
EDIT:
OK so it turned …