小编Mat*_*int的帖子

Entity Framework Code First是否允许在单独的文件中进行流畅的映射?

我正在使用Entity Framework Code First开发一个相当大的数据库模式.我更喜欢Fluent API而不是Data Annotations方法,因为它将我的域对象保留为简单的POCO.

为了使用Fluent API,我必须在继承自DbContext的类中重写OnModelCreating.

我不喜欢所有实体的所有映射都在这个方法中.我之前使用过类似FluentNHibernate的东西,每个实体都有自己的映射类.EF有类似的东西吗?

我想我可以创建自己的接口来实现一个映射类,并在OnModelCreating方法中调用它们.我可以使用反射或IoC来发现它们.我并没有特别看到这种方法有什么问题,但我想知道Entity Framework是否已经开箱即用了这样的东西?

entity-framework fluent-interface ef-code-first

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

连接两个Windows运行时缓冲区的最佳方法是什么?

我编写了以下扩展方法来连接Windows运行时应用程序中的两个IBuffer对象:

public static IBuffer Concat(this IBuffer buffer1, IBuffer buffer2)
{
    var capacity = (int) (buffer1.Length + buffer2.Length);
    var result = WindowsRuntimeBuffer.Create(capacity);
    buffer1.CopyTo(result);
    buffer2.CopyTo(0, result, buffer1.Length, buffer2.Length);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

这是处理这个问题最有效的方法吗?有更好或更简单的方法吗?

我已经回顾了在C#中组合两个或多个字节数组的最佳方法,但我认为我不应该转换为字节数组.

c# windows-runtime

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

我们如何使用Breeze使用当地时区生存

我写这篇文章是为了收集关于我们方法的评论,希望能帮助别人(和我的记忆).

脚本

  • 我们所有的数据库都使用DateTime没有时区信息的数据类型.
  • 在内部,我们知道数据库中的所有日期/时间都在本地(新西兰)时间,而不是UTC.对于Web应用程序,这并不理想,但我们不控制所有这些数据库的设计,因为它们支持其他系统(会计,工资单等).
  • 我们正在使用Entity Framework(模型优先)进行数据访问.

我们的问题

  • 如果没有特定的时区信息,Breeze/Web Api/Entity Framework堆栈似乎倾向于假设时间是UTC,而不是本地,这可能是最好的,但不适合我们的应用程序.
  • Breeze喜欢以标准UTC格式将日期传递回服务器,特别是在查询字符串(例如where子句)中.想象一下Breeze控制器直接将数据库中的表作为IQueryable公开.Breeze客户端将以UTC格式将任何日期过滤器(where)子句传递给服务器.实体框架将忠实地使用这些日期来创建SQL查询,完全不知道数据库表日期在我们的本地时区.对我们而言,这意味着结果在12到13个小时之间,偏离了我们想要的结果(取决于夏令时).

我们的目标是确保我们的服务器端代码(和数据库)始终在我们的本地时区中使用日期,并且所有查询都返回所需的结果.

timezone datetime entity-framework asp.net-web-api breeze

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

Firebase.ServerValue.TIMESTAMP的时区

看来,当我使用Firebase.ServerValue.TIMESTAMP当前,它正在使用PDT(我假设将在秋季更改为PST).

有没有办法在UTC而不是PDT中获取此信息?

timezone firebase

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

JSON日期序列化和时区

我在使用JSON序列化对象在客户端浏览器上显示正确日期时遇到问题.用户可以定义他们想要查看数据的时区.鉴于此,我将UTC日期转换为服务器上用户的时区.然后我想通过JSON将日期/时间(已经转换为定义的时区)序列化到浏览器.

看起来很简单,但是我一直在使用的JSON序列化程序已经严重破坏了我的日期.服务器为UTC,客户端位于Central(-6).即使我将DateTime.Kind指定为Unspecified,也会调整日期(-12小时).

不知何故,.NET知道客户端的浏览器在哪个时区以及服务器处于什么时区,即使我已根据用户的全局设置调整了时间并设置了日期,它也取消了我的日期/时间-6.有点不明确.如何才能让JSON序列化程序不尝试调整日期?

List<ErrorGridModel> models = Mapper.Map<ErrorCollection, List<ErrorGridModel>>(errors);
foreach (ErrorGridModel m in models)
{
    //convert UTC dates to user local dateTime - split out date vs. time for grouping & splitting columns
    DateTime dtLocal = TimeZoneInfo.ConvertTimeFromUtc(m.ErrorDate, this.AppContext.User.TimeZoneInfo);
    m.ErrorDate = new DateTime(dtLocal.Year, dtLocal.Month, dtLocal.Day, 0, 0, 0, DateTimeKind.Unspecified);
    m.ErrorTime = new DateTime(1900, 1, 1, dtLocal.Hour, dtLocal.Minute, dtLocal.Second, DateTimeKind.Unspecified);
}
IQueryable<ErrorGridModel> dataSource = models.AsQueryable();
return new ContentResult() { Content = JsonConvert.SerializeObject(dataSource.ToDataSourceResult(request), new JsonSerializerSettings() { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat }), ContentType = "application/json" }; …
Run Code Online (Sandbox Code Playgroud)

.net timezone datetime json json.net

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

为什么HotTowel包含Breeze?

这听起来似乎是表面上的一个愚蠢的问题,但为什么Hot Towel SPA模板包括Breeze

过去几天我一直在学习Hot Towel及其依赖项,据我所知,模板中没有任何内容实际上使用Breeze.也许这会随着未来的发布而改变?

当然,Breeze是一个很好的图书馆.但它必须采用CRUD方法,并要求您以特定方式设计ApiControllers.(元数据,SaveChanges等)请看这里

它还指导您进入实体框架.虽然这更像是一种软依赖,但由于Breeze还展示了没有它的示例,它仍然使用修改后的存储库模式引导您使用类似的实现模式.

如果您使用NoSQL数据存储区或CQRS模式而不是CRUD,那么Breeze将变得非常难以使用.有一些替代的数据访问库可以很好地运用这种风格,例如AmplifyJS.

但热毛巾的其余部分非常棒!我特别喜欢Durandal.所以问题是,如果模板实际上没有进行任何数据访问 - 为什么要包含任何数据访问组件?最好是在没有Breeze的情况下运送它,如果最终用户想要使用Breeze,或者放大,或者其他什么 - 那就这样吧.Hot Towel的其余部分将继续作为一个伟大的SPA实施发光.

breeze hottowel

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

CLDR时区xml中英语示例城市的完整列表在哪里?

core/common/main/en.xmlCLDR 中有几个示例城市和元区域名称,但是,完整列表不包含在en.xml中,就像所有其他语言一样.

为什么会这样,我在哪里可以找到英语示范城市的完整列表?

timezone cldr

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

为什么ISO-8601规范在小数点时似乎被普遍忽略?

来自ISO-8601:2004(E)规范:

4.2.2.4带小数部分的表示法

如果特定应用需要,可以包括小时,分钟或秒的小数部分.如果包含小数部分,则应省略低阶时间元素(如果有),小数部分应从整数部分除以ISO 31-0中指定的小数符号,即逗号[,]或句号[ ].其中,逗号是首选标志.

很简单.因此,根据此规范,优选使用逗号分隔整个和小数部分来写入一秒的分数,例如2014-01-01T00:00:00,123.然而,似乎几乎无处不在,只接受小数点(又名"完全停止")!

现在我确定有一些语言或库将这一点考虑在内,我知道在很多情况下你可以自己提供格式的全部细节.但这似乎是对规范的明显监督,似乎各种程序员都犯了同样的错误. 除了纯粹的人为错误之外,是否存在这种情况的原因?

以下是我测试的地方列表.如果您找到其他人,请随意编辑问题以扩充我的列表.谢谢.

.NET/C#

DateTime dt = DateTime.Parse("2014-01-01T00:00:00,123");
Run Code Online (Sandbox Code Playgroud)

抛出一条FormatException消息"字符串未被识别为有效的DateTime".使用句点而不是逗号的相同内容会成功解析.

JavaScript日期对象

最新(在撰写本文时)Chrome,Internet Explorer,Firefox和Node.js进行了测试:

var dt = new Date('2014-01-01T00:00:00,123');
Run Code Online (Sandbox Code Playgroud)

退货"Invalid Date".使用句号代替工作正常.

带有moment.js的 JavaScript

var valid = moment("2014-01-01T00:00:00,123").isValid();
Run Code Online (Sandbox Code Playgroud)

退货false.使用句点代替返回true.

PHP

echo strtotime('2014-01-01T00:00:00,123');
Run Code Online (Sandbox Code Playgroud)

返回一个空字符串.使用句号代替工作正常.

红宝石

require 'time'
puts Time.iso8601("2014-01-01T00:00:00,123")
Run Code Online (Sandbox Code Playgroud)

给出了运行时错误.虽然Time不保持小数秒,但它不应该出错 - 实际上如果使用句号,它就可以工作.

javascript php c# datetime iso8601

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

使用箭头从带有时区的字符串中解析日期和时间

我有

import arrow
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
Run Code Online (Sandbox Code Playgroud)

如何用Arrow解析这个问题,以便获得带有时区的Arrow对象tz?以下默认为UTC时间.

In [30]: arrow.get(s, 'YYYY/M/D HH:mm:ss')
Out[30]: <Arrow [2015-12-01T19:00:00+00:00]>
Run Code Online (Sandbox Code Playgroud)

我知道该.to功能,但转换时区,但不允许我更改为时区.

python timezone datetime arrow-python

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

将DateTimeOffset作为WebAPI查询字符串传递

我有一个WebAPI动作,如下所示:

[Route("api/values/{id}")]
public async Task<HttpResponseMessage> Delete(string id, DateTimeOffset date) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是当我从一个HttpClient实例调用它时,创建一个如下的URL:

string.Format("http://localhost:1234/api/values/1?date={0}", System.Net.WebUtility.UrlEncode(DateTimeOffset.Now.ToString()));
// -> "http://localhost:1234/api/values/1?date=17%2F02%2F2015+7%3A18%3A39+AM+%2B11%3A00"
Run Code Online (Sandbox Code Playgroud)

我得到一个400回复,说date不可存在的参数不存在.

我也尝试将该[FromUri]属性添加到参数中,但它仍然没有映射.如果我将其更改为DateTimeOffset?我可以看到它保留为null并且查看Request.RequestUri.Query值是否存在,只是没有映射.

最后,我尝试不做一个WebUtility.UrlEncode,它没有任何不同.

.net c# asp.net-web-api

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