小编Dan*_*eny的帖子

如何让Entity Framework初始化我新创建的实体上的集合?

我正在尝试用一些IDatabaseIntialiser像这样的测试数据为我的数据库播种:

protected override void Seed(BlogDataContext context)
{
    // <snip>
    var post = context.Posts.Create();
    post.Title = "My Life On Twitter";
    // <snip properties>

    // Set tags
    post.Tags.Add(aspnetTag); // NullRefException
    post.Tags.Add(razorTag);
Run Code Online (Sandbox Code Playgroud)

Post实体看起来像这样:

public class Post
{
    // ...
    public virtual ICollection<Tag> Tags { get; set; }
Run Code Online (Sandbox Code Playgroud)

Bitbucket的完整实体:帖子标签.所有代码均在http://code.dantup.com/blog

但是,post.Tags为null,所以这不起作用.最初我是创建帖子new Post(),但是因为我正在调用CreateEF提供的方法,为什么集合没有初始化?

在这里实例化我自己的集合感觉很笨拙,如果我在构造函数中这样做,大概每次我从EF加载一个实体时,它都会在构造函数中创建集合,然后用一个包含实际数据的集合覆盖它. D B?

有没有办法告诉EF为我创建一个实体,包括我的集合/代理ICollections(假设ICollection是正确的选择)?

编辑:context.Configuration.ProxyCreationEnabled设置为true(默认情况下),这似乎是存在的原因

.net asp.net-mvc entity-framework sql-server-ce ef-code-first

8
推荐指数
1
解决办法
2796
查看次数

如何在C#中为测量单位创建通用转换器?

在研究涉及温度转换的小型烹饪项目以及一些烹饪测量转换(例如Imperial to Metric)时,我一直在努力学习更多关于代表和lambdas的知识,我一直试图想办法制作一个可扩展的单位转换器.

这是我的开始,以及我的一些计划的代码评论.我没有计划像下面那样使用它,我只是测试了C#的一些功能我不太了解,我也不确定如何进一步采取这一点.有没有人对如何在下面的评论中创建我正在谈论的内容有任何建议?谢谢

namespace TemperatureConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            // Fahrenheit to Celsius :  [°C] = ([°F] ? 32) × 5?9
            var CelsiusResult = Converter.Convert(11M,Converter.FahrenheitToCelsius);

            // Celsius to Fahrenheit : [°F] = [°C] × 9?5 + 32
            var FahrenheitResult = Converter.Convert(11M, Converter.CelsiusToFahrenheit);

            Console.WriteLine("Fahrenheit to Celsius : " + CelsiusResult);
            Console.WriteLine("Celsius to Fahrenheit : " + FahrenheitResult);
            Console.ReadLine();

            // If I wanted to add another unit of temperature i.e. Kelvin 
            // then I would need …
Run Code Online (Sandbox Code Playgroud)

.net c# generics delegates units-of-measurement

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

如何在使用基于代码的迁移时停止添加迁移检查我的数据库没有挂起的迁移?

我正在研究使用基于代码的EF迁移来获取使用EF的产品.一切都运行良好,除了命令:

Add-Migration MyTestMigration
Run Code Online (Sandbox Code Playgroud)

输出以下消息:

由于以下显式迁移未决,因此无法生成显式迁移:[201206260845338_DannyTest].在尝试生成新的显式迁移之前应用挂起的显式迁移.

原因是连接字符串在构建时是未知的,并且EF在.\ SQLExpress上随机创建了一个名为"MyContextName"的数据库.我无法应用挂起的迁移,因为它引用了此数据库中不存在的数据库表 - 我们只是尝试使用迁移作为执行脚本的方式;

所以问题是:

  1. 如果我们没有使用自动迁移(我们有EnableAutomaticMigrations = false),为什么Add-Migration要求数据库是最新的,即使它对生成的(空)迁移没有任何影响?我发现很难相信MS在这么多用法的情况下不打算使用这个用例; 唯一"破碎"的东西是不影响任何行为的验证.

  2. 除了创建我们自己的Add-Migration命令之外,还有什么方法可以复制EF的功能,但跳过(看似不必要的)DB最新检查?我试过传递各种论点,但到目前为止还没有成功.

编辑:

我实际上找到了解决这个问题的更好方法,但它并不是这些问题的真正答案,所以在这里添加它.希望有时间把它变成博客文章!

我想使用Add-Migration的唯一原因是因为DbMigration带来的所有guff; 但我意识到,通过基类,我们基本上可以通过让基类从属性自动生成迁移ID来消除所有这一切.目标对于我们的所有迁移都是相同的,因为模型状态不会改变.现在,我们只需手动创建这样的迁移(构建ID需要日期,以便EF以正确的顺序应用它们):

[Migration(2012, 6, 27, 12, 00, "Add new xxx fields for yyy")]
internal class MyNewMigration : MyDbMigration
{
    public override Up()
    {
        // ...
    }
    public override Down()
    {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

MyDbMigration类有目标/来源/标识特性.Target是硬编码的(与第一次迁移时创建的Add-Migration相同),Source为null,Id是读取MigrationAttribute的反射.这意味着我们现在可以手动创建这些类; 现在我们不用担心所有的IMigrationMetadata内容:-)

.net c# entity-framework ef-migrations

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

这是为iPhone游戏进行游戏循环的好方法吗?

我是iPhone开发人员的新手,但他正在尝试构建一个2D游戏.我正在关注一本书,但它创建的游戏循环基本上说:

function gameLoop
    update()
    render()
    sleep(1/30th second)
    gameLoop
Run Code Online (Sandbox Code Playgroud)

原因是这将以30fps运行.然而,这似乎有点精神,因为如果我的框架花了1/30秒,那么它将以15fps运行(因为它将花费尽可能多的时间来更新).

所以,我做了一些挖掘,发现了CADisplayLink类,它将我的gameLoop函数的调用与刷新率(或其中的一小部分)同步.我找不到它的很多样本,所以我在这里发布代码审查:-)它似乎按预期工作,它包括将经过的(帧)时间传递到Update方法,所以我的逻辑可以是帧率 - 独立(但我实际上无法在文档中找到CADisplayLink如果我的框架花费超过其允许的运行时间将会做什么 - 我希望它只是尽力赶上,并且不会崩溃!).

//
//  GameAppDelegate.m
//
//  Created by Danny Tuppeny on 10/03/2010.
//  Copyright Danny Tuppeny 2010. All rights reserved.
//

#import "GameAppDelegate.h"
#import "GameViewController.h"
#import "GameStates/gsSplash.h"

@implementation GameAppDelegate

@synthesize window;
@synthesize viewController;

- (void) applicationDidFinishLaunching:(UIApplication *)application
{
 // Create an instance of the first GameState (Splash Screen)
 [self doStateChange:[gsSplash class]];

 // Set up the game loop
 displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(gameLoop)];
 [displayLink setFrameInterval:2];
 [displayLink addToRunLoop:[NSRunLoop currentRunLoop] …
Run Code Online (Sandbox Code Playgroud)

iphone iphone-sdk-3.0 quartz-2d

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

在NuGet包install/init期间运行的Powershell脚本有哪些安全限制?

从NuGet安装软件包时,它可以运行一些Powershell脚本进行设置(例如导出要在Package Manager控制台中使用的命令).

我正在尝试(并且失败)找到这些脚本能够/不能做什么的细节.具体来说 - 我们应该担心这些恶意代码吗?他们可以读取文件系统,发送Web请求等吗?

powershell nuget

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

如何在我的一半请求上调试SessionStateModule/REQUEST_AQUIRE_STATE> 100秒?

这种情况在最近几天开始发生; 可能是因为我安装了Visual Studio 2012.它目前只发生在我的机器上(我的同事们都在VS 2010上),但我希望卸载VS 2012,看看是否有影响.

我的所有Web请求中约有50%在SessionStateModule/REQUEST_AQUIRE_STATE中挂起约100秒(然后页面成功完成).

ANTS Profiler一直报告为"等待同步",并在一些IIS线程回调中给出了堆栈跟踪(我们的代码都没有;遗憾的是我没有信息可用).

我为所有请求启用了IIS失败请求跟踪,并重新加载了我们应用的同一页面10次.请求3,5,7,9全部耗时> 100秒,其他请求耗时<5秒.

我们正在使用In Process会话,因此没有任何内容通过网络或被序列化.据我所知,在发生这种情况之前,我们的代码都没有运行过.

如何获得有关调试问题的更多信息?

IIS失败请求跟踪截图

可能相关:

即使在调用abort之后浏览器也会等待ajax调用完成(jQuery)

.net c# asp.net iis iis-7.5

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

如何在不更改样式的情况下更改输入边框颜色?

我正在尝试做一些非常简单的事情;更改输入的边框颜色。在 IE11 和最新的稳定版 Chrome 中,更改颜色也会更改其外观(显示为 3D/更厚):

Wonkey CSS 边框

如果我尝试“1px solid red”,那么边框看起来是一样的,但大小会发生变化!

  1. 为什么改变颜色似乎不仅仅是改变颜色
  2. 我怎样才能改变颜色而不改变其他任何东西(样式、厚度、间距、大小等)?

我试过弄乱边框宽度和其他属性,但它们都没有导致与默认值完全相同的大小/间距,只是颜色发生了变化:(

(请在发布之前在 JSFiddle 中尝试您的更改......很多人发布错误答案然后删除它们!http://jsfiddle.net/S2TxT/4/

<input type="text" value="Default" />
<input type="text" style="border: 1px solid red" />
Run Code Online (Sandbox Code Playgroud)

html css

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

将 UTF-16 视为固定的 16 位编码会产生什么问题?

我正在阅读一些关于 Unicode 的问题,其中有一些我不完全理解的评论,例如:

Dean Harding:UTF-8是一种变长编码,处理起来比定长编码更复杂。另外,请参阅我对 Gumbo 答案的评论:基本上,所有编码(UTF-8、UTF-16 和 UTF-32)中都存在组合字符,并且它们需要特殊处理。您可以使用与组合字符相同的特殊处理来处理 UTF-16 中的代理项对,因此在大多数情况下您可以忽略代理项并将 UTF-16 视为固定编码。

我对最后一部分(“大部分”)有点困惑。如果UTF-16被视为固定的16位编码,这会导致什么问题?存在 BMP 之外的字符的可能性有多大?如果存在,如果您假设为两字节字符,这可能会导致什么问题?

我阅读了关于代孕者的维基百科信息,但它并没有真正让我更清楚事情!

编辑:我想我真正的意思是“为什么有人建议将 UTF-16 视为固定编码,而它看起来是假的?”

编辑2:

我在“ Is There Any Reasons to Preferred UTF-16 over UTF-8? ”中找到了另一条评论,我认为这更好地解释了这一点:

Andrew Russell:就性能而言:UTF-8 比 UTF-16 更难解码。在 UTF-16 中,字符要么是基本多语言平面字符(2 字节),要么是代理对(4 字节)。UTF-8 字符可以是 1 到 4 个字节之间的任意位置

这表明 UTF-16 不会有任何三字节字符,因此通过假设 16 位,您不会因减少一个字节而“完全搞砸”。但我仍然不相信这与假设 UTF-8 是单字节字符有什么不同!

unicode utf-16 unicode-string

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

f#的int中get_Zero是什么/在哪里?

我刚刚学习F#,在tryfsharp.org上玩的时候,我注意到如果我更改了这段代码:

[0..100]
|> List.sum
Run Code Online (Sandbox Code Playgroud)

["A"; "B"; "D"]
|> List.sum
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

The type 'string' does not support the operator 'get_Zero'
Run Code Online (Sandbox Code Playgroud)

(这是你可以在你的浏览器中运行/修改的脚本,虽然它似乎只适用于我的IE!)

当我检查List.sum的定义时 ; 它说类型必须有一个名为Zero的静态成员.这似乎解释了错误; 除了我无法在int上看到任何名为Zero的成员!

所以; 这个适用于整数的零成员在哪里?如果我输入int.,我也无法在intellisense中看到它,也不会在docs中看到它,因为int只是一个.NET System.Int32(它似乎没有静态Zero属性).

(注意:它确实在错误中说"运算符"而不是"成员";这可能是相关的;虽然List.sum定义只是说"成员").

.net f# functional-programming compiler-errors f#-scripting

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

为什么这个使用 FakeAsync 的测试只是挂在“等待”上,即使未来已经完成?

我正在尝试使用 FakeAsync 编写一个测试,但它似乎挂在我的awaits 上。这是一个精简的示例:

  test('danny', () async {
    await FakeAsync().run((FakeAsync async) async {
      print('1');
      final a = Future<bool>.delayed(const Duration(seconds: 5))
          .then((_) => print('Delayed future completed!'))
          .then((_) => true);

      print('2');
      async.elapse(const Duration(seconds: 30));
      // Tried all this too...
      // async.flushMicrotasks();
      // async.flushTimers();
      // async.elapse(const Duration(seconds: 30));
      // async.flushMicrotasks();
      // async.flushTimers();
      // async.elapseBlocking(const Duration(seconds: 30));

      print('3');
      await a;

      print('4');
      expect(1, 2);
    });
  });
Run Code Online (Sandbox Code Playgroud)

此代码输出:

1
2
Delayed future completed!
3
// hangs and never prints '4'
Run Code Online (Sandbox Code Playgroud)

async.elapse呼叫被允许完成未来,但它仍然挂起await …

async-await dart flutter

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