我想检查一个实体是否有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.
我正在使用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) 我有一个表有一个主对象的孩子.任何子项都可以出现多次,并且有一个包含该数字的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) 我有以下设置
因此,当客户端按下按钮时,会向MVC发送一个请求,该请求将其路由到WCF,后者从外部服务聚合它,一切都很好,花花公子.
我似乎无法解决的问题是以另一种方式进行通信,即当其中一个外部服务脱机时,通知客户端(浏览器)的最简单,最优雅的方式是什么?
这意味着该服务应以某种方式通知mvc站点,该站点应以某种方式通知客户端外部服务处于脱机状态.
另外:外部服务具有高可用性,因此很少使用"脱机"方案,因此我正在寻找一种不对服务器进行大量轮询的解决方案.
我创建了一个在其构造函数中接受(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合规性,但目前我无法做到这一点.
是否有一些其他方法来创建属性仍然会做同样的事情,但摆脱警告?
我试图通过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) 我想知道是否有任何方法可以将以下代码写得更短......
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)
我使用的方法真的很愚蠢,我希望还有其他方法可以做到.谢谢您的帮助!
我正在尝试编写一个在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实例,但现在我想让客户摆脱它.
问题:
谢谢 !
我有一个产品,允许在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) 在 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)
处理路线时,我需要调用可能昂贵的服务,并提供给定的参数。我可以订阅路由的params和queryParams,但我只想在每次 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) c# ×6
jquery ×2
sql ×2
angular ×1
asp.net-mvc ×1
attributes ×1
bll ×1
dns ×1
observable ×1
sql-server ×1
t-sql ×1
typescript ×1
variables ×1
wcf ×1