小编SWe*_*eko的帖子

如何在通用实体上设置属性?

我想检查一个实体是否有3个属性.CreatedDate,ModifiedDate和ModifiedBy.

现在我只是在我的对象上下文的SaveChanges()方法中硬编码我知道的那些.

例如:

bool newEntity = (entry.State == EntityState.Added);

if (type == typeof(Foo))
{
  var r = entry.Entity as Foo;
  if (r != null)
  {
    if (newEntity) 
      r.CreatedDate = DateTime.Now;
    r.ModifiedDate = DateTime.Now;
    r.ModifiedBy = HttpContext.Current.User.Identity.Name;
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道可以使用与此类似的代码检查对象是否具有某种方法:

public static bool HasMethod(this object objectToCheck, string methodName)
{
    var type = objectToCheck.GetType();
    return type.GetMethod(methodName) != null;
} 
Run Code Online (Sandbox Code Playgroud)

但是,如果不直接投射实体,我将如何获得这些属性?

我该怎么做:

if (HasMethod(entry.Entity))
      entry.Entity.ModifiedDate = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)

我正在使用ASP.Net MVC 4.

c# entity-framework

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

如何在实体框架代码中首先映射不同数据类型的列和实体

我正在使用Entity Framework 5 - Code.

我有一个数据库,我连接到已经存在一段时间了(我没有创建它).有一张叫做的桌子T_Customers.它包含所有客户的列表.它具有以下结构(仅部分显示):

Customer_id | numeric (5, 0) | auto increment | not null (not set as primary key)
FName | varchar(50) | not null
LName | varchar(50) | not null
Run Code Online (Sandbox Code Playgroud)

我的Customer班级:

public class Customer : IEntity
{
     public int Id { get; set; }

     public string FirstName { get; set; }

     public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的IEntity界面:

public interface IEntity
{
     int Id { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-5

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

多次选择同一行

我有一个表有一个主对象的孩子.任何子项都可以出现多次,并且有一个包含该数字的Occurences列,因此表中的数据类似于:

ChildID | ParentID | Occurences
-------------------------------
      1 |        1 |        2
      2 |        1 |        2
      3 |        2 |        1
      4 |        2 |        3
Run Code Online (Sandbox Code Playgroud)

我需要得到所有孩子的清单,每个孩子在结果中出现核心次数,例如

IDENT | ChildID | ParentID
--------------------------
    1 |       1 |        1
    2 |       1 |        1
    3 |       2 |        1
    4 |       2 |        1
    5 |       3 |        2
    6 |       4 |        2
    7 |       4 |        2
    8 |       4 |        2
Run Code Online (Sandbox Code Playgroud)

我可以使用一个循环表的游标并插入尽可能多的行,但我认为这不是最好的解决方案.

谢谢您的帮助


创建脚本包括:

DECLARE @Children TABLE …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

从WCF服务向网站发送数据

我有以下设置

  • 一个jQuery网站(不完全是单页,但离它不远),它使用了一个
  • ASP.NET MVC网站作为后端,连接(通过net.tcp或net.pipe)
  • 管理和连接的自托管WCF服务
  • 过多的高延迟外部服务.

因此,当客户端按下按钮时,会向MVC发送一个请求,该请求将其路由到WCF,后者从外部服务聚合它,一切都很好,花花公子.

我似乎无法解决的问题是以另一种方式进行通信,即当其中一个外部服务脱机时,通知客户端(浏览器)的最简单,最优雅的方式是什么?

这意味着该服务应以某种方式通知mvc站点,该站点应以某种方式通知客户端外部服务处于脱机状态.

另外:外部服务具有高可用性,因此很少使用"脱机"方案,因此我正在寻找一种不对服务器进行大量轮询的解决方案.

c# error-handling asp.net-mvc wcf jquery

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

符合CLS的属性和数组参数

我创建了一个在其构造函数中接受(params)数组的属性.

internal class MyTestAttribute : Attribute
{
    public MyTestAttribute (params Options[] options)
    {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

Option 这是一个枚举(有很多值),所以一个示例调用站点将是

[MyTest(Option.One, Option.Three)]
internal void SomeMethod(int param1, long param2)
{
  ....
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好,并且设置正常,但我在每个呼叫站点上收到" Arrays as attribute arguments is not CLS-compliant "警告.现在,我不得不承认我不需要在C#以外的任何地方使用这个程序集,也不需要警告错误,但数百个警告变得烦人.

显而易见的解决方案是关闭CLS合规性,但目前我无法做到这一点.

是否有一些其他方法来创建属性仍然会做同样的事情,但摆脱警告?

c# attributes cls-compliant

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

如何使用TypeScript/jQuery传递元素

我试图通过TypeScript/JQuery计算出DOM元素的位置和高度/宽度.在TypeScript之前我只是做了这样的事情:

        function ActOnClick(itemClicked, loadPath) {
            //sample code
            var v1 = itemClicked.offset();
            var v2 = itemClicked.width();
            var v3 = itemClicked.height();

        };

        $(document).ready(function () {

            $("#idCRM").click(function () {
                ActOnClick($("#idCRM"), "/Widgets/GetCRM");
            });
}
Run Code Online (Sandbox Code Playgroud)

其中idCRM是我的cshtml文档中的"部分"(但它可以是任何div等)

现在我试图将此代码移动到TypeScript中,但我在ActOnClick函数中期望从jQuery的$("#idCRM")进入什么类型?现在我选择'元素'但是a)它没有暴露宽度,高度等b)由$("#idCRM")引起的ActOnClick调用失败!

/// <reference path="../../ScriptsTS/jquery.d.ts" />
function ActOnClick(itemClicked: Element, loadPath: string) {

    var v1 = itemClicked.offset();  <-- FAILS
    var v2 = itemClicked.width();   <-- FAILS
    var v3 = itemClicked.height();  <-- FAILS

};

$(document).ready(function () {

    $("#idCRM").click(function () {
        ActOnClick($("#idCRM"), "/Widgets/GetCRM");  <-- FAILS
    });
}
Run Code Online (Sandbox Code Playgroud)

jquery typescript

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

将多个变量添加到列表中

我想知道是否有任何方法可以将以下代码写得更短......

public PictureBox pb1; 
public PictureBox pb2; 
public PictureBox pb3;
..... 
public PictureBox pb50;
Run Code Online (Sandbox Code Playgroud)

然后,有没有办法将所有这些变量添加到列表中,而无需再次执行相同的丑陋代码.

listPB.add(pb1); listPB.add(pb2);...... ListPB.add(pb50);
Run Code Online (Sandbox Code Playgroud)

我使用的方法真的很愚蠢,我希望还有其他方法可以做到.谢谢您的帮助!

c# variables

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

如何在UI,BLL,DAL之间使用DTO

我正在尝试编写一个在BLL和DAL之间有非常严格的边界的小应用程序,现在我想知道在层之间传递数据(域传输对象)的最佳方法是什么.

我在一个域级(类库)中实现了一些由BLL和DAL访问的类.这些类基本上只包含属性/数据成员,并且当前反映DAL数据.例如:

class CustomerData
{
  // some data fields
}
Run Code Online (Sandbox Code Playgroud)

然后我在BLL中实现了一些类:

class Customer : CustomerData
{
  // Some methods
}
Run Code Online (Sandbox Code Playgroud)

在我的DAL中,我通过Linq-to-Sql从数据库中获取客户记录.然后我通过以下方式将linq对象映射到我的Domain对象:

CustomerData.field = LinqObject.field
// Etc
Run Code Online (Sandbox Code Playgroud)

因此,我的想法是,当我请求时,我现在是一个从DAL到BLL的CustomerData实例(并且我应该将Customer实例传递给我的UI).

因此,在我的BLL中,我将收到一个CustomerData实例,但现在我想让客户摆脱它.

问题:

  1. 我现在必须在我的BLL中创建一个Customer实例并且AGAIN复制所有字段成员吗?
    客户c =新客户; c.field = CustomerData.field;
  2. 如何在没有字段复制步骤的情况下从CustomerData创建客户?
  3. 我应该更喜欢使用构图吗?
    class Customer {CustomerData Data; }
  4. 在我当前的布局中有没有更有效的方法(更少编码等)?
  5. 有没有更好的方法来做到这一点?
  6. 一般的评论?

谢谢 !

c# dns user-interface data-access-layer bll

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

"折叠"表以消除空值

我有一个产品,允许在GUI中创建自定义字段.我创建了三个字段:系统发货日期,系统保修结束日期和系统保修说明.遗憾的是,系统将这些填充为行而不是列.

例:

Machine_GroupID      | agentGuid | fieldName                |  fieldValue
-----------------------------------------------------------------------------
systemABC.companyABC | 57537921  | System Ship Date         | 1/1/1900
systemABC.companyABC | 57537921  | System Warranty End Date | 1/1/1950
systemABC.companyABC | 57537921  | System Warranty Notes    | Test notes
system123.companyABC | 48394844  | System Ship Date         | 1/1/1900
system123.companyABC | 48394844  | System Warranty End Date | 1/1/1950
system123.companyABC | 48394844  | System Warranty Notes    | Test notes
systemXYZ.companyABC | 99948403  | System Ship Date         | 1/1/1900
systemXYZ.companyABC | 99948403 …
Run Code Online (Sandbox Code Playgroud)

sql

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

在 Angular 中组合路由和查询参数

在 Angular 中,我必须处理以下格式的路线

/sections/{id}?filter={filter}
Run Code Online (Sandbox Code Playgroud)

即我有一个路由参数(id)和一个查询参数(filter)。两个参数都是可选的,因此所有这些路由都是有效的并且正在被监听

/sections/{id}?filter={filter}
/sections?filter={filter}
/sections/{id}
/sections
Run Code Online (Sandbox Code Playgroud)

处理路线时,我需要调用可能昂贵的服务,并提供给定的参数。我可以订阅路由的paramsqueryParams,但我只想在每次 url 更改时调用该服务一次,从而避免任何不必要的调用。

问题是,当从 移动/sections/1?filter=active到时/sections/2,两个可观察量都会触发,而我无法控制哪个将首先触发。另一方面,当从/sections/1?filter=active/sections/1或从移动/sections/1?filter=active到时/sections/2?filter=active,只会触发一个。

有没有什么明智的方法可以知道最后一次订阅何时触发,以便我可以避免发送不需要的服务器调用?


到目前为止的测试代码看起来像这样:

constructor(private activeRoute: ActivatedRoute, private dataService: dataService) {

    this.activeRoute.paramMap.subscribe((params: ParamMap) => {
        console.log("triggering route params subscription");
        this.section = params.get("id");
        this.dataService.runSlowQuery(this.section, this.filter);
    });

    this.activeRoute.queryParamMap.subscribe((queryParams: ParamMap) => {
        console.log("triggering query params subscription");
        this.filter = queryParams.get("filter");
        this.dataService.runSlowQuery(this.section, this.filter);
    });
}
Run Code Online (Sandbox Code Playgroud)

observable angular angular-router

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