小编Ian*_*Ian的帖子

Linq to sql Repository模式,有些问题

我使用linq到sql的存储库模式,我每个表使用一个存储库类.我想知道,我是以良好/标准的方式做事,

ContactRepository

  Contact GetByID()
  Contact GetAll()
Run Code Online (Sandbox Code Playgroud)

COntactTagRepository

 List<ContactTag> Get(long contactID)
 List<ContactTag> GetAll()
 List<ContactTagDetail> GetAllDetails()

class ContactTagDetail
{
  public Contact Contact {get;set;}
  public ContactTag COntactTag {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

当我需要在contactrepository中使用contact i call方法时,对于contacttag也是如此

但是当我需要接触和标签一起我打电话GetDetais()在ContactTag存储库它不是返回产生由ORM insted的其返回ContactTagDetail实体conatining由ORM产生的接触和COntactTag的COntactTag实体,我知道我可以在COntactTag简单的通话GETALL存储库并且可以访问Contact.ContactTag但是作为它的linq到sql它将在查询级别没有延迟加载的选项,所以每当我需要一个具有相关实体的实体时我创建一个投影类

另一个疑问是,我真的需要正确的方法我可以在联系人和ContactTag repostitory,如在联系人存储库GetALlWithTags()或其他东西,但我在COntactTag存储库中做它的方法

你的建议是什么?

c# design-patterns linq-to-sql

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

识别InvalidOperationException"集合已被修改;枚举操作可能无法执行."

我有一个好老的InvalidOperationException被抛出标准信息

收集被修改; 枚举操作可能无法执行.

问题是,枚举器不会自行修改,例如:

private TRoute _copyRoute(TRoute route)
{
    TRoute tempRoute = new TRoute();
    tempRoute.Initialize(route.Resource);

    foreach (TVisit visit in route)
    {
       tempRoute.Add(visit);
    }
    tempRoute.EndLocation = route.EndLocation;
    return tempRoute;
}
Run Code Online (Sandbox Code Playgroud)

我的代码是多线程的(本例中大约12-15个线程),每个线程应该在自己的路由深度克隆上工作.显然某些地方出了问题,但是,我的问题是如何通过如此多的线程来追踪这一点?减少数量可以显着阻止问题的显现.

在这种情况下,我的路由实例是一个IList,所以我可以玩添加到界面的东西.它下面有它自己的List实现.

编辑

只是添加,我可以ToArray()或ToList()这可能忽略这里的问题,但我真的不想那样做,我想找到原因.例如:

如果我将其更改为以下内容:

private TRoute _copyRoute(TRoute route)
{
    TRoute tempRoute = new TRoute();
    tempRoute.Initialize(route.Resource);

    foreach (TVisit visit in route.ToList())
    {
       tempRoute.Add(visit);
    }
    tempRoute.EndLocation = route.EndLocation;
    return tempRoute;
}
Run Code Online (Sandbox Code Playgroud)

然后我在这个断言上失败了,因为在ToList()之前发生了一次机会......我需要尝试找出发生变化的地方

TRoute tempRoute1 = CopyRoute(route1);
TRoute tempRoute2 = CopyRoute(route2);
Debug.Assert(tempRoute1.Count == route1.Count);
Run Code Online (Sandbox Code Playgroud)

c# invalidoperationexception .net-2.0

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

float 到 long 转换时出错

我猜这是由于浮点和准确性造成的,但我只是想检查一下以确保没有遗漏任何其他内容。

我有一个 1007.62 的浮点数(存储在 info.Amount 中),该浮点数乘以 100 并转换为 long。此时我得到的值为 100761。

在此输入图像描述

这只是我们在应用双打时遇到的旧舍入错误吗?我认为这种情况可能发生的唯一方法是,如果它实际上存储为 1007.6199999999999 (但为了显示目的而四舍五入)。那么乘法之后转换为 long 会忽略小数点后的所有内容吗?

c#

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

在网格内添加网格

我刚刚在Umbraco 遇到了新的Grid布局系统,这看起来很有趣,但是我似乎找不到找到在网格中包含网格的方法。

在下面的示例中,我在页面上添加了一个简单的2列行,但是现在我想在其中添加另一个2列行以填充2个红色正方形。这是不可能的,还是我遗漏了一些明显的东西?

如果单击底部的任何布局,则会将其作为额外的一行添加到页面底部,而不是在现有网格内。

在此处输入图片说明

umbraco7 umbraco-mvc

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

检测点击位置

当我在DevExtreme图表中点击一个点时,我试图显示一些东西(最终是一个菜单).为简单起见,我开始使用条形图.

我想要做的是,当用户点击一个栏以在该特定点的DOM中显示其他内容时.我试图设置它并且大部分都是这样,我得到的问题我不确定如何解决是关于坐标.

在此输入图像描述

上面的示例显示了我单击的位置,以及我附加的红色圆圈,它出现在栏的顶部.添加它的代码非常简单:

var clicked = function(p) {
 var element = p.element[0];
 var group = d3.select(element)
             .select("svg")
               .append("g")
               .attr("transform", "translate("+ [p.target.x, p.target.y] +")")
               .append("circle")
               .attr({ cx : 0, cy: 0, r: 10, class: "circle"});
};
Run Code Online (Sandbox Code Playgroud)

只需获取目标点击元素的坐标即可.显然这似乎是顶角.有没有人可以想到获得实际点击的位置?

我在这里举了一个示例小提琴:http://jsfiddle.net/IPWright83/ho2euurh/2/

javascript devextreme

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

实现 react-bootstrap-typeahead 的组合框行为

我正在尝试使用react-bootstrap-typeahead控件,但我很震惊,试图让它做我想做的事。我的页面上实际上有 2 个,其中一个是进行真正的异步查找,另一个是我几乎想表现得像一个组合框。

我希望能够做的是选择一个项目,然后单击下拉菜单以改变主意并选择另一个项目。但是,如果您尝试这样做,当您再次展开列表时,它会自动过滤到您选择的项目。

例如,如果我使用演示页面上的基本示例并选择Alabama,则单击输入现在仅显示Alabama而没有其他选项。我希望这可以理想地将我返回到完整列表(这可能吗?)。

在此处输入图片说明

javascript react-bootstrap-typeahead

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

在 GitHub 操作工作流中安装 GitHub 存储库

我正在尝试构建一个 GitHub 操作工作流,其中涉及安装其他私人代表中存在的依赖项。我已经尝试了各种排列(我现在有点迷失了方向),但我无法让它们中的任何一个工作。

我创建了一个秘密,存储在TOKEN_GITHUB其中授予访问其他存储库的权限,因此我可以正确安装,因为我相信所提供的范围仅限于当前代表。

这是一个示例 GitHub 工作流文件,它最终通过 CDK 部署多个 Lambda,但为了简单起见,我将其排除在外:
deploy.yml

name: Lint, Audit, Test & Deploy

on:
    push:
        branches: [master]

jobs:
    build:
        runs-on: ubuntu-latest
        if: "!contains(github.event.head_commit.message, 'ci skip')"

        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-node@v1
              with:
                  node-version: 12
            - name: getList Lambda
              run: |
                  cd lambdas
                  cd getList
                  npm ci
                  npm audit --production --audit-level=moderate
            - name: getItem Lambda
              run: |
                  cd lambdas
                  cd getItem
                  npm ci
                  npm audit --production --audit-level=moderate
            - name: saveItem Lambda
              run: |
                  cd …
Run Code Online (Sandbox Code Playgroud)

github github-actions

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

如何添加 Secrets Manager IAM 权限?

我正在阅读有关SecretsManager的 CDK 文档,我不确定我是否误解了,但是我认为从他们的示例中可以看到的内容似乎并未授予我预期的权限。本质上,我有一个包含一些 Lambda 的堆栈,我希望它们都能从 SecretsManager 中读取两个秘密。

class CdkStack extends cdk.Stack {
    /**
     *
     * @param {cdk.Construct} scope
     * @param {string} id
     * @param {cdk.StackProps=} props
     */
    constructor(scope, id, props) {
        super(scope, id, props);

        // eslint-disable-next-line no-new
        new APIServices(this, "APIServices");

        const role = new iam.Role(this, "SecretsManagerRead", {
            assumedBy: new iam.AccountRootPrincipal(),
        });

        const dbReadSecret = new secretsmanager.Secret(this, "databaseReader");
        const dbWriteSecret = new secretsmanager.Secret(this, "databaseWriter");

        dbReadSecret.grantRead(role);
        dbWriteSecret.grantRead(role);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,我应该简单地创建这个角色并授予它访问机密的权限?然而,当我尝试运行它们时,我的 Lambda 仍然失败。我是否还需要执行我正在阅读的有关将该角色明确分配给 Lambda 的文档中未提及的任何其他操作?

javascript amazon-web-services aws-secrets-manager aws-cdk

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

umbraco剃刀 - 从内容中获取字段

我有6项相同内容类型的"新闻",在每个项目中我都有一个字段newsIntro.我想把特定页面中的字段放在另一个页面上,所以我需要定位一个特定字段,因此它可能是节点1702上的newsIntro.我尝试了一些像

@ 1720.newsIntro

如何定位特定字段

谢谢

field umbraco razor umbraco-webforms

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

Excel数据透视表 - 按类别平均

我正在尝试在数据透视表中按类别创建平均值.这是我第一次创建数据透视表,如果答案正在盯着我,那就很抱歉.我的原始数据如下:

Date,   Transaction type,   Description,     Paid out,   Paid in,    Balance,   Category
Mar-13, Visa,   SHOP,    £4.44, ,        £X,    Gifts
Mar-13, Visa,   SHOP,    £5.00, ,        £Y,    Children
Mar-13, Visa,   SHOP,    £6.00, ,        £Z,    Gifts
Mar-13, Visa,   CLOTHES SHOP YORK,   £8.00, ,        £A,    Clothing
Mar-13, Visa,   FOOD SHOP,   £11.96, ,       £B,    Food
Run Code Online (Sandbox Code Playgroud)

我的数据透视表显示按月汇总的信息,并按类别分组:

Row Labels  Sum of Paid out Sum of Paid in  Sum of Difference
2013            
   Jan        £Jan       £Jan                  £C
     Food       1              2                 -
     Car        2              3                     -
     Cash       6              6
   Feb …
Run Code Online (Sandbox Code Playgroud)

excel pivot-table

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