我有一个验证引擎,它遍历对象的所有属性并检查它们是否有效。
如果我得到一个实体并更改一个简单的属性并通过引擎运行它,它会吸收所有延迟加载的集合。
换句话说,它获取集合并遍历该集合中的实体。如果集合已经被检索,那很好,但如果它没有被检索,那么它没有理由是无效的,所以没有理由去获取它。
简而言之,我可以检查一个集合并查看它是否已被检索。如果我可以这样做,那么我可以相应地跳过或迭代该集合。
我正在尝试获取对象列表并将其格式化为电子邮件主题和正文.为了说明我在做什么,请参考以下示例:
public string GetSubject(Person myPerson)
{
return String.Format("To {0}", myPerson.Name);
}
public string GetMessage(Person myPerson)
{
return String.Format("Dear {0}, Your new salary: {1}",
myPerson.Name, myPerson.Salary);
}
public string GetSubject(VacationDay dayOff)
{
return String.Format("Vacation reminder!");
}
public string GetMessage(VacationDay dayOff)
{
return String.Format("Reminder: this {0} is a vacation day!", dayOff.Name);
}
Run Code Online (Sandbox Code Playgroud)
后来我收到了一堆我想要批量发送的电子邮件:
// myEmailObjects is a "List<object>"
foreach (var emailItem in myEmailObjects)
{
SendEmail(from, to, GetSubject(emailItem), GetMessage(emailItem));
}
Run Code Online (Sandbox Code Playgroud)
问题是此代码无法编译,因为编译器无法解析调用哪个GetSubject和哪个GetMessage例程.是否有任何通用的方法来编写它而不使用is或as运算符来检查类型?
我有以下方法:
public void Update<T>(T entity, IEnumerable<Expression<Func<T, Object>>> properties)
where T : class
{
_context.Set<T>().Attach(entity);
foreach (var property in properties)
_context.Entry<T>(entity)
.Property(((MemberExpression)property.Body).Member.Name)
.IsModified = true;
} // Update
Run Code Online (Sandbox Code Playgroud)
我正在传递一个Entity Framework实体,附加它并将每个属性设置为已修改.
我想用它如下:
_repository.Update<File>(file, new { x => x.Data, x => x.Name });
Run Code Online (Sandbox Code Playgroud)
所以我传递一个文件并说数据和名称属性被修改.
但是我收到了错误:
The best overloaded method match for 'Update<File>(File,
IEnumerable<System.Linq.Expressions.Expression<System.Func<File,Object>>>)'
has some invalid arguments
Run Code Online (Sandbox Code Playgroud)
如上所述,我应该如何更改我的方法才能使用它?
或者可能:
_repository.Update<File>(file, x => x.Data, x => x.Name);
Run Code Online (Sandbox Code Playgroud)
甚至:
_repository.Update<File>(file, x => new { x.Data, x.Name });
Run Code Online (Sandbox Code Playgroud) 我正在使用Robert Giesecke Unmanaged Exports创建一个.NET包装器DLL,以便在Delphi 7中使用.NET DLL.到目前为止,一切正常,但现在我有一个需要有回调/委托的功能.
如何才能做到这一点?
我可以将函数指针指向我的.NET DLL并从那里调用它,当它是,它是如何完成的?
我有两个模型,其中两个都包含ICollection对象,如下所示:
public class Business : ApplicationUser
{
...
public virtual ICollection<Subcategory> Subcategories { get; set; }
...
}
public class Request
{
....
public virtual ICollection<Subcategory> Subcategories { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
我想查询业务并获得其子类别与请求中的子类别匹配的业务(即使一个匹配就足够了).我有类似的东西,我只是作为样本编写,当然它不起作用(请求类型为Request):
foreach (var subcategory in request.Subcategories)
{
var businesses = db.Users
.OfType<Business>()
.Where(b => b.Subcategories
.Where(s => s.SubcategoryName == subcategory.SubcategoryName));
}
Run Code Online (Sandbox Code Playgroud)
因此,举例来说,假设我们有两个企业,第一个有足球和篮球作为子类别,第二个有篮球和网球.然后,假设我们的用户选择了足球和网球子类别,所以我的查询应该返回两个商家,因为第一个包括足球,第二个包括网球.
因此,并非每个子类别都应该匹配,即使一个匹配也足以接受业务.我怎样才能实现它?如果你能提供代码,我会很高兴.
这里也是我的子类别模型,如果你需要它:
public class Subcategory
{
public int SubcategoryID { get; set; }
public string SubcategoryName { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 当我觉得它应该返回8.25时,下面的代码返回9.25,我有什么误解?
(new DateTimeOffset(2014,09,04,08,15,00,new TimeSpan(0,0,0))).Subtract(new DateTimeOffset(2014,09,04,08,15,00,new TimeSpan(0,0,0)).Date).TotalHours
Run Code Online (Sandbox Code Playgroud)
更简单地显示为: -
DateTimeOffset start = new DateTimeOffset(2014,09,04,08,15,00,new TimeSpan(0,0,0));
double result = start.Subtract(start.Date).TotalHours
Run Code Online (Sandbox Code Playgroud)
在时区GMT的Windows 7 PC上运行(调整为夏令时): -
9月12日结果= 9.25
12月12日结果= 8.25
实体框架的[Key]属性对我不起作用.我有一个console应用程序,我正在尝试添加此类:
public class Post
{
[Key]
public int IDPost { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int IDBlog { get; set; }
public virtual Blog Blog { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
找不到类型或命名空间名称'Key'(您是否缺少using指令或程序集引用?)
找不到类型或命名空间名称'KeyAttribute'(您是否缺少using指令或程序集引用?)
我添加了这个使用:
using System.Data.Entity;
Run Code Online (Sandbox Code Playgroud)
我将这些引用添加到项目中:
EntityFramework EntityFramework.SqlServer System.ComponentModel.DataAnnotations
我正在使用EF6和VS2012.
我错过了什么参考?
这两个代码块都做同样的事情吗?
class A {
public static int s;
A(){}
static A(){s = 100;}
}
Run Code Online (Sandbox Code Playgroud)
和
class A {
public static int s=100;
A(){}
//static A(){s = 100;} do not use
}
Run Code Online (Sandbox Code Playgroud)
他们做同样的事情吗?我认同.
在Objective-C中用Swift /类别编写扩展时,我必须决定在Xcode项目中组织它们的结构化方法.我认为考虑不同Apple框架的依赖关系是个好主意.
让我们看一下框架的MKMapView类MapKit.它有一个属性centerCoordinate类型的属性CLLocationCoordinate2D.并且CLLocationCoordinate2D属于CoreLocation框架.因此,MapKit框架取决于CoreLocation框架.
我知道我可以浏览相应的头文件来收集我正在寻找的信息.但这很乏味.
是否在某处概述了iOS/MacOS SDK附带的所有Apple框架的依赖关系?或者更方便的方法来确定它们?
反编译源并查找Double.Min并Double.Max显示以下定义:
public const double MinValue = -1.79769313486232E+308;
public const double MaxValue = 1.79769313486232E+308;
Run Code Online (Sandbox Code Playgroud)
这与msdn页面匹配.
如果我尝试手动将此最大值分配给变量,则会出现以下错误:
Floating-point constant is outside the range of type 'double'
Run Code Online (Sandbox Code Playgroud)
double d1 = -1.79769313486232E+308; // DOESN'T COMPILE
Double d2 = 1.79769313486232E+308; // DOESN'T COMPILE
Run Code Online (Sandbox Code Playgroud)
有人能解释一下为什么会这样吗?双边界验证有问题吗?