[置顶]ADO.NET Entity Framework 之 Code First 快速入门
posted @ 2011-02-23 14:16 苦逼的屌丝 阅读(4206) 评论(33) 编辑
- 做事情,需要专注
置顶随笔 #
posted @ 2011-02-23 14:16 苦逼的屌丝 阅读(4206) 评论(33) 编辑
2011年7月1日 #
马老师的Kienct系列写的很不错,等他的Depth Data也等了好几天了,不见其更新。于是自己在空闲时间研究了下。特发此文,与各位园友分享。
如果您对Kinect for Windows开发不了解的话,建议您点击下马老师的博客,或者观看相关视频进行了解。
在C#中,获得Depth Data有两种方式。当然大家最喜欢用的是基于事件的这一种。
Runtime nui = new Runtime();
private void Window_Loaded(object sender, RoutedEventArgs e)
{
nui.Initialize(RuntimeOptions.UseDepthAndPlayerIndex | RuntimeOptions.UseSkeletalTracking);
nui.DepthFrameReady += new EventHandler<ImageFrameReadyEventArgs>(DepthFrameReady);
nui.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Resolution320x240, ImageType.DepthAndPlayerIndex);
}
void DepthFrameReady(object sender, ImageFrameReadyEventArgs e)
{
}
在这里,我们只讨论基于RuntimeOptions.UseDepthAndPlayerIndex的景深数据。
在ImageFrameReadyEventArgs中返回了一个ImageFrame类实例,ImageFrame类中包含了PlanarImage类,PlanarImage中包含了一个Bits属性。它是一个bytes数组。
这个数组包含了每一个像素的数据信息。其规则是,从左到右,从上到下。

数组中每一项包含了距离和PlayerIndex信息(这是仅仅基于RuntimeOptions.UseDepthAndPlayerIndex的景深数据,其他类型的枚举可能不包括PalyerIndex数据)
数组中每一项包含2个byte,总计16 bit

低位的后3位是PlayerIndex的数据,理论上,应该支持2^3个PlayerIndex,可是Kinect最多可达6个可能的值,目前仅支持3个。
其余的13位就是景深数据,在计算距离时,要移掉后面3位,高位要左移5位,然后相加或者取或运算。
公式为:Bytes[1] * 2^5 + Bytes[0] / 2^3(右移3位,相当于除以2^3,一定要取整)
那么理论上支持最大的距离是8192毫米,即8.192米。
当然,公式也可以这样写:Bytes[0] >> 3 | Bytes[1] << 5
OK,就写到这里了,我的理解是这样的,如果我的理解有什么问题,欢迎提出来。

posted @ 2011-07-01 13:22 苦逼的屌丝 阅读(2094) 评论(4) 编辑
2011年2月23日 #
ADO.NET Entity Framework CTP 5 (以下简称CTP5)已经发布好长时间了。它将是最后一个CTP版本(adonet博客里面是这样说的)。至于最后的归宿, 会不会集成到VS2010 SP1里面去?
本篇博文仅仅介绍快速入门,更多内容您可以访问adonet博客或者等待下文。
在这之前,您首先需要下载CTP5.
下面以最简单的文章和文章类型举例:
首先创建一个解决方案,引用CTP5,System.Data.Entity和System.ComponentModel.DataAnnotations

解决方案如下:

Model中的两个类代码非常简单:
ArticleType.cs

Article.cs

其中,在字段上加Key特性的,将会生成表的主键,virtual字段在此作用是延迟加载。
Context.cs 代码比较简单,继承自DbContext

在App.Config中配置如下连接字符串
<connectionStrings>
<add name="Context" connectionString="pwd=abc123;uid=sa;database=CodeFirst;server=.\sql2008" providerName="System.Data.SqlClient" />
</connectionStrings>
注意:providerName 必不可少
至此,Code First代码基本完成。下面进行测试
准备测试数据。在Porgram.cs编写如下代码:

在程序入口写入下面代码:

DbContext将会根据Model自动创建数据库和表。

同时数据已插入数据库

posted @ 2011-02-23 14:16 苦逼的屌丝 阅读(4206) 评论(33) 编辑