摘要:
上一家公司有用到插件式开发来做一个工具箱,类似于QQ电脑管家,有很多工具列表,点一下工具下载后就可以开始使用了。可惜在那家公司待的时候有点短,没有好好研究一下。现在有空,自己在网上找了些资料,也来试试。主要思路:公开一个插件接口,如果.DLL或.EXE的代码中有继承这个接口就将其示为插件,并将这些插件放在同一目录。运行程序的时候扫描目录并通过反射判断.DLL或.EXE中是否存在该接口,若存在,则当作插件加载进来。我们来做一个示例看看。例子也是在园子里找的,自己改了一下,详见:http://www.cnblogs.com/xianhong/archive/2011/03/18/1988191.h 阅读全文
摘要:
虽然EF6都快要出来了,但是对于Oracle数据库,仍然只能用DB first和Model First来编程,不能用Code First真是一个很大的遗憾啊。好了,废话少说,我们来看看EF中是如何用DB first和Model First来对Oracle编程的。首先我们要下载ODP.NET这个数据驱动程序,下载链接:http://www.oracle.com/technetwork/topics/dotnet/index-085163.html安装成功后,我们在VS连接Oracle数据库时就可以选择ODP.NET了,如图:Model First模型优先是先建立数据模型,然后再根据模型生成相应的 阅读全文
摘要:
控制数据库的位置默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayContext。有几种方法可以改变这种默认约定。利用配置文件在配置文件中新加一个连接字符串 <connectionStrings> <add name="BreakAwayContext" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS 阅读全文
摘要:
多个实体映射到一张表Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则:实体必须是一对一关系实体必须共享一个公共键观察下面两个实体: public class Person { [Key] public int PersonId { get; set; } public int SocialSecurityNumber { get; set; } public string FirstName { get; set; } public string LastName { get; set; ... 阅读全文
摘要:
使用Data Annotations:如果我们要到一对主从表增加级联删除,则要在主表中的引用属性上增加Required关键字,如: public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; set; } public string Description { get; set; } public byte[] Photo {... 阅读全文
摘要:
一对多关系项目中最常用到的就是一对多关系了。Code First对一对多关系也有着很好的支持。很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性、导航属性等检测到模型之间的关系,自动为我们生成外键。观察下面的类:View Code public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; set; } publi... 阅读全文
摘要:
什么是并发?并发分悲观并发和乐观并发。悲观并发:比如有两个用户A,B,同时登录系统修改一个文档,如果A先进入修改,则系统会把该文档锁住,B就没办法打开了,只有等A修改完,完全退出的时候B才能进入修改。乐观并发:同上面的例子,A,B两个用户同时登录,如果A先进入修改紧跟着B也进入了。A修改文档的同时B也在修改。如果在A保存之后B再保存他的修改,此时系统检测到数据库中文档记录与B刚进入时不一致,B保存时会抛出异常,修改失败。EF中如何控制并发?Entity Framework不支持悲观并发,只支持乐观并发。如果要对某一个表做并发处理,就在该表中加一条Timestamp类型的字段。注意,一张表中只能 阅读全文
摘要:
在EF中,我们建立数据模型的时候,可以给属性配置数据生成选项DatabaseGenerated,它后有三个枚举值:Identity、None和Computed。Identity:自增长None:不处理Computed:表示这一列是计算列。在EF中,如果主键是int类型,Code First生成数据库的时候会自动设置该列为自增长。但如果主键是Guid类型,我们就要手动的去设置了。对于下面的模型,如果我们没有设置自增长,数据库中会以0来填充 public class Person { [Key] public Guid SocialSecurityNumber {... 阅读全文
摘要:
为了说明什么是复杂属性,先举一个例子。 public class CompanyAddress { public int ID { get; set; } public string CompanyName { get; set; } public string StreetAddress { get; set; } public string City { get; set; } public string State { get; set; } public string ZipCode { get;... 阅读全文
摘要:
要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就是Fluent API,通过新增相应的配置类来覆盖默认配置。现在我们用这两个来对比了解EF中的约定配置。主键:KEYData Annotations:通过Key关键字来标识一个主键[Key]public int DestinationId { get; set; }Fluent API:public class BreakAwayContext : DbContext { pu... 阅读全文
摘要:
Code First是Entity Framework提供的一种新的编程模型。通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库。下面通过一个简单的示例来了解。建立一个控制台项目。通过Nuget来获取Entity Framework。增加两个模型类: public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; ... 阅读全文
摘要:
想在Silverlight中实现一个消息提醒功能,类似于QQ,在右下角弹出窗体。但发现Silverlight中的子窗体都没有类似WinForm中的StartPostion或Location属性,不能定义窗体出现的位置,好像还不能游离于父窗体之外 ,简单来说就是做不到一直在右下角显示。好在SL4中新增了一个功能NotificationWindow,用这个可以勉强实现我们所需的功能。但用了NotificationWindow不得不吐槽一下,做得和鸡肋一样,有太多的限制了:1 一次只能显示一个。2 高度不能超过100,宽度不能超过400。3 只能在OOB模式下使用。4 显示时间最大不能超过30S。5 阅读全文
摘要:
这篇文章是为了收集Silverlight中的一些技巧,会不定时更新。1.读取外部XML,通过WebClient异步下载。注意,XML文件要放在SL的WEB项目中。 /// /// 获取URL地址 /// /// public static string GetURL() { Uri uri = Application.Current.Host.Source; string url = uri.AbsoluteUri.Replace(uri.AbsolutePath, stri... 阅读全文
摘要:
1 部署IIS1.1 安装WASIIS原本是不支持非HTTP协议的服务,为了让IIS支持net.tcp,必须先安装WAS(Windows Process Activation Service),即windows进程激活服务。打开控制面板--程序和功能--打开或关闭windows功能,安装WAS,如图:安装完毕后在Services窗口中可以到到如下服务:Windows Process Activation Service;Net.Msmq Listener Adapter;Net.Pipe Listener Adapter;Net.Tcp Listener Adapter;Net.Tcp Por 阅读全文
摘要:
WPF程序也可以很轻松的实现类似QQ那样最小化到任务栏的功能。 WindowState ws; WindowState wsl; NotifyIcon notifyIcon; #region Constructions public MainWindow() { InitializeComponent();//显示托盘。 icon(); //保证窗体显示在上方。 wsl = WindowState; ... 阅读全文
摘要:
通过后台代码来自定义一个Grid//实例化一个Grid Grid grid = new Grid(); //设置RowDefinition RowDefinition row1 = new RowDefinition(); row1.Height = new GridLength(20); grid.RowDefinitions.Add(row1); RowDefinition row2 = new RowDefinition(); row2... 阅读全文
摘要:
主要是用到DoubleAnimation 标签:<Canvas x:Name="c1" Margin="2,25,2,2"> <Canvas.Triggers> <EventTrigger RoutedEvent="Canvas.Loaded" > <BeginStoryboard> <Storyboard x:Name="animation" RepeatBehavior="Forever" > <Dou... 阅读全文
摘要:
保存一些标准的SQL句,持续更新...1 列修改增加列IF NOT EXISTS (SELECT * FROM SYSCOLUMNS WHERE ID=OBJECT_ID('QueryDataSource') and name = 'IsCrossTable') BEGIN ALTER TABLE QueryDataSource ADD IsCrossTable bit default(0) --插入字段 END删除列ALTER TABLE AC_TYPE DROP COLUMN ACCATEGORY_ID,ACCATEGORY_GUID;修改列 alter t 阅读全文
摘要:
1 错误提示:提供的 URI 方案“file”无效;应为“http”网上的一个方法链接:http://blog.csdn.net/robin022/article/details/6439965说是将项目的启动项改为SL中的WEB项目即可,还有一种情况可能是你的WEB项目中没有引用wcf ria library中相应的web项目。增加引用即可。但我仍然还遇到了一种情况,表示无力吐槽,客户端SilverLight项目:Shell 服务端SilverLight项目:Shell.Web.右击Shell,属性-调试-启动操作-浏览器外应用程序,先改为Shell,然后运行项目。项目报错后再将属性-调试- 阅读全文
摘要:
最近在一个silverlight项目,使用silverlight类库创建WCF RIA 服务。新增一个域服务类,默认继承的是DomainService,当此时在服务类中写几个方法,编译,然后在客户端Generated_Code文件夹可以自动生成相应的代理类。但当我将服务类改为继承DbDomainService 时,再重新生成项目,客户端就无法再自动生成代理类了。DbDomainService<T>来自Microsoft.ServiceModel.DomainServices.EntityFramework.dll.(可以在NuGet中搜索:RIAServices.EntityFra 阅读全文