小编rya*_*lit的帖子

强制内连接与多对多关系实体框架

我的数据库中有一个多对多关系设置,如下所示:

User
-------
Id (PK, Identity)
First
Last
...various other fields

Skill
-------
Id (PK, Identity)
Description

UserSkill
-----------
UserId (PK, FK on User.Id)
SkillId (PK, FK On Skill.Id)
Run Code Online (Sandbox Code Playgroud)

当我在 DbContext 上运行此 LINQ 查询时:

from u in Users 
from s in u.Skills 
where s.Id == 5 
select new 
{
    u.Id,
    s.Description
})
Run Code Online (Sandbox Code Playgroud)

生成的 SQL 包含所有内部联接,这就是我想要的:

SELECT 
[Extent1].[UserId] AS [UserId], 
[Extent2].[Description] AS [Description]
FROM  [dbo].[UserSkill] AS [Extent1]
INNER JOIN [dbo].[Skill] AS [Extent2] ON [Extent1].[SkillId] = [Extent2].[Id]
WHERE 5 = [Extent2].[Id]
Run Code Online (Sandbox Code Playgroud)

但是,当我添加一个简单的额外 …

c# linq linq-to-entities linq-query-syntax entity-framework-5

5
推荐指数
1
解决办法
2164
查看次数

仅删除特定控制器的“X-Frame-Options”标头

我正在尝试使用以下方法删除仅针对特定控制器操作的“X-Frame-Options”标头:

protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
    filterContext.HttpContext.Response.Headers.Remove("X-Frame-Options");
    base.OnResultExecuting(filterContext);
}
Run Code Online (Sandbox Code Playgroud)

然而,这似乎根本不起作用。我可以让它在我的网站上正常工作的唯一方法是将此代码添加到下面的 global.asax 中。我很确定我在 ASP.NET MVC / IIS 管道中缺少正确的步骤,该步骤允许我覆盖该标头的 IIS 设置。这可能吗?

protected void Application_EndRequest()
{
    Response.Headers.Remove("X-Frame-Options");
}
Run Code Online (Sandbox Code Playgroud)

至于我为什么要这样做,我正在构建一个小部件,用户可以通过使用 iframe 在他们的个人网站上使用该小部件,但允许他们将信息发回我们的网站。我意识到关闭此标头会带来安全隐患,虽然我欢迎任何有关如何减轻这些风险的建议,但我只是想知道我所要求的是否可行。

iframe x-frame-options asp.net-mvc-5

5
推荐指数
1
解决办法
4604
查看次数

创建自动生成的整数不起作用

根据autofixture cheatsheet,我应该能够以连续的方式自动生成数字(1,2,3等).

我正在使用最新版本(3.34.0)并使用与备忘单显示完全相同的代码,并且不断获取随机数,而不是1,2,3等.我错过了什么吗?作弊表是否过时了?

我的代码:

var fixture = new Fixture();
int i = fixture.Create<int>();
Run Code Online (Sandbox Code Playgroud)

编辑:

谢谢托马斯 - 我在github上添加了一个问题:

https://github.com/AutoFixture/AutoFixture/issues/440

c# autofixture

3
推荐指数
1
解决办法
107
查看次数

在实现DDD时保护聚合根的不变量和子节点

在我开始学习DDD的尝试中,我开始使用一个简单的域模型,随着时间的推移,我会逐渐建立起来.我在这个实例中的域是通常的订单>订单项目,以便保持简单,并能够稍后添加发票等.这是我到目前为止:

public class Order
{
    private readonly IList<OrderItem> _orderItems;

    public Guid Id { get; private set; }
    public bool Completed { get; private set; }
    public DateTime Created { get; private set; }
    public IEnumerable<OrderItem> OrderItems
    {
        get { return _orderItems; }
    }

    public Order()
    {
        Id = new Guid();
        Created = DateTime.UtcNow;
        _orderItems = new List<OrderItem>();
    }

    public void AddOrderItem(int quantity, int unitCost)
    {
        var orderItem = new OrderItem(quantity, unitCost);
        _orderItems.Add(orderItem);
    }

    public void CompleteOrder()
    {
        Completed = true; …
Run Code Online (Sandbox Code Playgroud)

domain-driven-design

3
推荐指数
2
解决办法
738
查看次数

使用JQuery/ASP.NET进行简单的ajax聊天时出现堆栈溢出错误

我正在尝试使用JQuery和ASP.NET创建一个简单的ajax聊天.我的代码是这样的:

  1. 当页面加载时,它会通过对messages.aspx页面的请求刷新'chatbox'div,该页面处理从数据库中获取新消息并使用setTimeout()启动自动刷新.
  2. 每当用户单击发送按钮时,它都会将消息添加到messages.aspx page_load代码中的数据库中.

我在超时开始时从一开始就收到堆栈溢出错误,我不确定是什么原因引起的?它可以缓存吗?也许messages.aspx中的代码无法在5秒内完成运行?任何帮助,将不胜感激!

另外,我不担心sql注入攻击但b/c我只是试图让它使用简单的代码.

这是我的代码:

客户端:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
        <script src="jquery.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                refreshChat();
                $("#btnSend").click(function() {
                    addMessage();               
                });
                return false;
            });

            function refreshChat()
            {
                $.get("messages.aspx", function(data) {  
                    $("#chatbox").empty();
                    $("#chatbox").prepend(data);
                });
                setTimeout(refreshChat(), 5000);
            }

            function addMessage()
            {
                $.get("messages.aspx", {usr: $("#usr").val(), msg: $("#msg").val()} );
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">

            <div id="input">
                username: <input type="text" name="usr" id="usr" …
Run Code Online (Sandbox Code Playgroud)

asp.net ajax jquery chat settimeout

1
推荐指数
1
解决办法
2446
查看次数

HttpClient默认标头不能与Microsoft.Owin.Testing.TestServer一起使用

我正在使用该Microsoft.Owin.Testing库集成测试我的API在内存中.我已经在OWIN JWT中间件中添加了我的身份验证需求,现在我正在尝试传递生成的令牌来测试需要授权的控制器的请求.我可以向您保证JWT中间件设置正确,因为它在正常使用时工作得很好.但是,我正在观察TestServer.HttpClient对象的一些奇怪行为.当我在HttpClient上设置默认授权头以传递令牌时,我的测试永远不会通过,因为无法识别令牌.但是,当我使用时TestServer.CreateRequest(...),测试正确传递并识别令牌.我更喜欢使用HttpClient方法,因为它们使用所提供的所有扩展方法使事情变得简单得多PostAsJsonAsync,等等.我开始认为在TestServer.HttpClient我或者我有一个完全缺少某些东西的错误.

这是我的测试类(使用NUnit3):

public class DefinitionsControllerTests
{
    private TestServer _server;
    private string _accessToken;

    [SetUp]
    public void Setup()
    {
        _server = TestServer.Create<Startup>();

        var credentials = new FormUrlEncodedContent(new[] {
            new KeyValuePair<string, string>("grant_type", "password"),
            new KeyValuePair<string, string>("username", "john.doe@mail.com"),
            new KeyValuePair<string, string>("password", "testing123")
        });

        // get token from OWIN JWT middleware
        dynamic resultBody = JObject.Parse(
            _server.HttpClient.PostAsync("/oauth/token", credentials).Result.Content.ReadAsStringAsync().Result);

        _accessToken = (string)resultBody.access_token;

        // this does not appear to ever work
        _server.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _accessToken);
    } …
Run Code Online (Sandbox Code Playgroud)

integration-testing owin katana asp.net-web-api2

1
推荐指数
1
解决办法
754
查看次数