有没有知道戴尔dell 3050mfffmini电脑的

关于required 属性设置为真(true),字段 不能包含 null 值的搜索推荐 -VB-TryCatch
>> 相关推荐
关于的搜索推荐
代码如下: Con1.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&monDialog1.FileName&";PersistSecurityInfo=False" rs1.Open"select*from"&SaveTbName,Con1,adOpenKeyset,adLockOptimistic
Fori=1To3 rs1.AddNew
ForJ=0ToMSHFlexGrid2.Cols-1
rs1.Fields(i)=MSHFlexGrid2.TextMatrix(i,J) NextJ rs1.Update Nexti 程序执行到rs1.Update时就出现说的错误 数据定义的全都是数值型的
大侠出来帮帮忙吧 我看很多人问这个问题但就是找不到正确答案! 大侠!!
SaveTbName是我建立的新表语句如下 DimsqlsAsString sqls="CREATETABLE"&SaveTbName&"(样地号intnotnull,面积floatnotnull,林分密度floatnotnull,林分断面积floatnotnull,林分算术平均胸径floatnotnull,林分平方平均胸径floatnull)"
Debug.Print"sqls="+sqls
Con1.Execute(sqls)'创建数据表
从你的错误信息来看
MSHFlexGrid2.TextMatrix(i,J)&---这一段一定在某个时候传回空白值(NULL)。你可以用Print来抓看看。
单步的时候看到MSHFlexGrid2.TextMatri...
我想用asp来动态的修改数据库中的字段现在遇到一个问题,一个Text类型的字段,缺省的Required属性是No添加记录的时候,数据被自动补上了空格我用 userName like ...
在panel里加speedbutton,可down属性改不了,要是改不了还要这个属性干嘛,应该可以改吧?
------------
将其GroupIndex 设为一个& 0
-----------...
public class Product{public int Id{}[StringLength(256)]public string Name{}}有没有类似的attribute设置它不为空?
------------
直接set...
在它的属性不能有其它控件的NAME!
------------
需要将字段的“required”属性设置为false,如何通过VB代码实现?
------------
http://access911.net/index.asp?board=4&mode=3&recordid=74FAB01E15DC...
出错问题:Microsoft OLE DB Provider for ODBC Drivers 错误 '' [Microsoft][ODBC Microsoft Access Driver] 由于其 Required 属性设置为真(True),字...
用delphi动态创建的access表,如何设置其字段的“是否允许空字符串”为真?谢谢!!
------------
转,要用代码 “必填” 为“是” 表示不允许 NULL“允许空”...
在数据窗口对象中设置了某列的Required属性,怎么在程序中解除它???
------------
------------
datawindow.modify("columnname.Edit.Required...
我设置了DataWindow的一个字段为required,在输入数据的时候,调用了DataWindow的InsertRow函数,结果出来一个"DataWindow Error"对话框。请问,如何截获这个事...
PropertyGrid 绑定 Panel 时有一个Locked属性,我这么样在加载时设置这个属性为true呢?
------------
替楼主搜了下/post/07-03-20/...
在VS2005中设置DIALOG的属性,将滚动条属性设置为TRUE,这样在界面中出现滚动条样式,但不能实现滚动。
------------
有说:自己实现滚动消息响应,(在BEGIN_...
RT 非常无语,日期我想做成可以为空
------------
那用DateTime? ,数据库中字段值设为允许为空
------------
我是采用了一个固定的日期值()存入数据...
不知各位遇到过这样的情况没有,我这里有一张大表,数据量大概几百万条,其中有一个数量的字段设置为 整数类型,并且 NOT NULL 。但今天应用程序出错跟踪数据库后...
------------
string ls_templs_temp = dw_name.object.column_name[ row ]if isnull( ls_temp ) then
messagebox( '', 'Cannot be null' )【配置属性】—Entity Framework 对应表字段的类型的设定配置方法
来源:博客园
摘自:/nianming/archive//2757997.html
 
Entity Framework Code First的默认行为是使用一系列约定将POCO类映射到表。然而,有时候,不能也不想遵循这些约定,那就需要重写它们。重写默认约定有两种方式:Data Annotations和FluentAPI。Data Annotations在功能上是Fluent API的子集,在一些映射场景下使用Annotations不能达到重写的目的,因此本篇文章中使用Fluent API配置属性。
一、Fluent API配置属性
Code First Fluent API通常情况下是在DbContext的派生类中重写OnModelCreating方法。
1.配置Length
Length用来描述数组的长度,当前包括string和Byte数组。
默认约定:Code First对string或byte数组的默认长度约定是max。注意:Sql Server Compact中默认最大数组长度是4000。
重写约定:使用HasMaxLength(nn),参数为可空整数。

Property(t =& t.Name).HasMaxLength(50);

另外关于Length的Fluent API还有下面2个:
IsFixedLength(),配置属性为固定长度。
IsMaxLength(),配置属性为数据库提供程序允许的最大长度。
2.配置Data Type
Data Type表示将.NET类型映射到的数据库的数据类型。
默认约定:列的数据类型由使用的数据库提供程序决定。以SQL Server为例:String-&nvarchar(max),Integer-&int,Byte[]-&varbinary(max),Boolean-&bit。
重写约定:使用HasColumnType(“xxx”),下面列子的Photo是byte[]类型,配置映射到image数据类型:

Property(t =& t.Photo).HasColumnType("image");

3.配置允许为空和不允许为空
默认约定:主键属性不允许为空,引用类型(String,array)允许为空,值类型(所有的数字类型,Datetime,bool,char)不允许为空,可空的值类型Nullable&T&允许为空。
重写约定:使用IsRequired()配置不允许为空,使用IsOptional()配置允许为空。下面配置Name属性为不为空:

Property(t =& t.Name).IsRequired();

4.配置属性到指定列
默认约定:映射到与属性名相同的列。
重写约定:使用Property(t=&t.属性名).HasColumnName(“xxx”)。下面配置Name映射到DepartmentName:

Property(t =& t.Name).HasColumnName("DepartmentName");

5.配置主键
默认约定:(1)属性名为ID或Id的默认为主键 
(2)类名+ID或类名+Id默认为主键
(其中ID或Id的优先级大于类名+ID或类名+Id)
重写约定:使用HasKey(t=&t.属性名)。下面将BlogId配置为主键:

HasKey(t =& t.BlogId);

6.配置组合主键
下面的例子将DepartmentId和Name属性组合作为Department类型的主键:

HasKey(t =& new { t.DepartmentId, t.Name });

 
 
7.配置Database-Generated
默认约定:整型键:Identity。
重写约定:使用Property(t =& t.属性名).HasDatabaseGeneratedOption(DatabaseGeneratedOption)。
DatabaseGeneratedOption枚举包括三个成员:
(1) None:数据库不生成值
(2) Identity:当插入行时,数据库生成值
(3) Computed:当插入或更新行时,数据库生成值
整型默认是Identity,数据库生成值,自动增长,如果不想数据库自动生成值,使用DatabaseGeneratedOption.None。
Guid类型作为主键时,要显示配置为DatabaseGeneratedOption.Identity。
8.配置TimeStamp/RowVersion的乐观并发
默认约定:这个没有默认约定。
配
置:使用Property(t=&t.属性名).IsRowVersion()

Property(t =& t.RowVersion).IsRowVersion();

9.不配置TimeStamp的乐观并发
有些数据库不支持RowVersion类型,但是又想对数据库的一个或多个字段并发检查,这时可以使用Property(t=&t.属性名).IsConcurrencyToken(),下面的例子将SocialSecurityNumber配置为并发检查。

Property(t =& t.SocialSecurityNumber).IsConcurrencyToken();

10.配置String属性是否支持Unicode内容
默认约定:默认string是Unicode(在SQL Server中是nvarchar)的。
重写约定:下面的例子使用IsUnicode()方法将Name属性配置为varchar类型的。

Property(t =& t.Name).IsUnicode(false);

11.配置小数的精度和小数位数
默认约定:小数是(18,2)
配
置:使用Property(t=&t.属性名).HasPrecision(n,n)

public decimal MilesFromNearestAirport { }

12.复杂类型
默认复杂类型有以下规则:
(1) 复杂类型没有主键属性 (2) 复杂类型只能包含原始属性。
(3)在其他类中使用复杂类型时,必须表示为非集合类型。
使用plexType方法显示配置为复杂类型:

plexType&Address&();

13.嵌套的复杂类型
嵌套的复杂类型只需显示配置外层,内层自动继承复杂类型的约定。
14.配置复杂类型的属性
配置复杂类型的属性和配置实体属性一样,具体参考下面的实例。
二、配置属性实例
下面直接给出代码,代码上都有注释。注:下面的实体主要是为了演示用

//实体
public class Trip
public Guid Identifier { }
public DateTime StartDate { }
public DateTime EndDate { }
public decimal CostUSD { }
public string Description { }
public byte[] RowVersion { }
//复杂类型
public class Address
public int AddressId { }
public string StreetAddress { }
public string City { }
public string State { }
public string ZipCode { }
//复杂类型
public class PersonalInfo
public Measurement Weight { }
public Measurement Height { }
public string DietryRestrictions { }
//复杂类型
public class Measurement
public decimal Reading { }
public string Units { }
//实体
public class Person
public Person()
Address = new Address();
Info = new PersonalInfo()
Weight = new Measurement(),
Height = new Measurement()
public int PersonId { }
public int SocialSecurityNumber { }
public string FirstName { }
public string LastName { }
public Address Address { }
public byte[] Photo { }
public PersonalInfo Info { }
public byte[] RowVersion { }
//对实体Trip的配置,继承自EntityTypeConfiguration&T&
public class TripConfiguration : EntityTypeConfiguration&Trip&
public TripConfiguration()
//配置Identifier映射到TripId列,并设为主键,且默认值为newid()
HasKey(t =& t.Identifier).Property(t =& t.Identifier).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).HasColumnName("TripId");
//配置CostUSD的精度为20,小数位数为3
Property(t =& t.CostUSD).HasPrecision(20, 3);
//配置Description的长度为500
Property(t =& t.Description).HasMaxLength(500);
//配置RowVersion乐观并发检查
Property(t =& t.RowVersion).IsRowVersion();
//对实体Person的配置,继承自EntityTypeConfiguration&T&
public class PersonConfiguration : EntityTypeConfiguration&Person&
public PersonConfiguration()
//配置SocialSecurityNumber不允许为空且乐观并发检查
Property(t =& t.SocialSecurityNumber).IsRequired().IsConcurrencyToken();
//配置FirstName不允许为空
Property(t =& t.FirstName).IsRequired();
//配置LastName不允许为空
Property(t =& t.LastName).IsRequired();
//配置Photo映射到数据库的数据类型为image
Property(t =& t.Photo).HasColumnType("image");
//配置RowVersion乐观并发检查
Property(t =& t.RowVersion).IsRowVersion();
//对复杂类型Address的配置,继承自ComplexTypeConfiguration&T&
public class AddressConfiguration : ComplexTypeConfiguration&Address&
public AddressConfiguration()
//配置AddressId映射到AddressId列
 100:
Property(t =& t.AddressId).HasColumnName("AddressId");
 101:
//配置StreetAddress长度为100并映射到StreetAddrress列
 102:
Property(t =& t.StreetAddress).HasMaxLength(100).HasColumnName("StreetAddress");
 103:
//配置State长度为50并映射到State列
 104:
Property(t =& t.State).HasMaxLength(50).HasColumnName("State");
 105:
//配置City长度为50并映射到City列
 106:
Property(t =& t.City).HasMaxLength(50).HasColumnName("City");
 107:
//配置ZipCode映射到ZipCode列,不支持Unicode内容,并设为固定长度为6
 108:
Property(t =& t.ZipCode).IsUnicode(false).IsFixedLength().HasMaxLength(6).HasColumnName("ZipCode");
 109:
}
 110:
}
 111:

 112:
//对复杂类型PersonalInfo的配置,继承自ComplexTypeConfiguration&T&
 113:
public class PersonalInfoConfiguration : ComplexTypeConfiguration&PersonalInfo&
 114:
{
 115:
public PersonalInfoConfiguration()
 116:
{
 117:
//配置DietryRestrictions长度为100
 118:
Property(t =& t.DietryRestrictions).HasMaxLength(100);
 119:
}
 120:
}
 121:

 122:
public class BreakAwayContext : DbContext
 123:
{
 124:
public DbSet&Trip& Trips { }
 125:
public DbSet&Person& People { }
 126:

 127:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
 128:
{
 129:
//注册配置
 130:
modelBuilder.Configurations.Add(new TripConfiguration());
 131:
modelBuilder.Configurations.Add(new PersonConfiguration());
 132:
modelBuilder.Configurations.Add(new AddressConfiguration());
 133:
modelBuilder.Configurations.Add(new PersonalInfoConfiguration());
 134:
base.OnModelCreating(modelBuilder);
 135:
}
 136:
}

最后生成的数据库结构,如下图所示:
Trips表

People表
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动如何在应用系统中实现数据权限的控制功能 - 伍华聪 - 博客园
随笔 - 501, 文章 - 20, 评论 - 7301, 引用 - 20
在很多应用行业里面,都对数据的权限做了特别的声明,如对于销售,财务的数据,它们是非常敏感的,因此要求对数据权限进行控制,对于基于集团性的应用系统而言,就更多需要控制好各自公司的数据了。如默认只能看本公司、或者本部门的数据,对于特殊的领导,可能需要跨部门的数据,因此不能硬编码那个领导该访问哪些数据,需要进行后台的权限和数据权限的控制为佳,本文主要针对这个特点,对这个数据权限的功能模块进行探讨,并以我的Winform开发框架的实际案例进行剖析,介绍实际项目中对数据权限的控制管理。
1、权限系统的控制
刚才说到,对数据进行控制最好通过弹性的方式,在一个系统里面或者功能模块里面对用户角色或者岗位进行设置,一般权限控制默认在一个权限管理系统模块进行设定,数据权限也应该如此。
权限系统除了可以对用户能操作那些功能进行限定,也还可以对其访问那些组织机构的数据进行限定,我们通过权限系统,把这些权限控制的数据进行保存,在应用系统模块里面进行整合即可,根据角色拥有的数据权限,授予用户对其他部门或者机构的数据进行访问。如下面是我权限系统模块里面对角色权限的设置操作。
1)对角色功能权限进行设置
2)对角色数据权限进行控制
当对角色的数据权限进行保存后,我们就可以把这个角色能够访问的组织机构(公司、部门、工作组等等)进行记录起来了。
2)应用系统的集成,实现数据权限的控制
&如我的一个病人资料应用系统,客户要求就是基于互联网的应用系统,因此使用WCF数据通讯模式实现数据的集中管理,而且他们要基于医院单位的数据管理模式,也就是每个单位管理各自的数据,我们可以把不同的医院单位作为不同的公司性质来区分,这样在权限模块中进行设置即可。
1)在应用程序中,通过在程序头部,让可以管理多个医院机构的用户选择管理的数据访问,即可实现不同的数据区分管理。
2)当用户在上面切换不同的机构,所有存在的界面数据全部实现刷新,如打开了很多界面,那么这些界面的数据也随之更新为对应新的机构下的数据。
了解了上面大致的需求,我们应该如何通过整合权限管理系统实现在应用系统的数据权限控制和集成呢?
首先我们需要在用户登陆的时候,获取对应用户的数据权限内容,然后把它转化为我们需要的信息,如下代码所示。
//判断如果用户管理的公司数据多于两个,那么就显示选择单位列表,并绑定公司数据
List&RoleDataInfo& roleDataList = CallerFactory&IRoleDataService&.Instance.FindByUser(info.ID);
List&int& companyList = new List&int&();
foreach (RoleDataInfo roleDataInfo in roleDataList)
if (!string.IsNullOrEmpty(roleDataInfo.BelongCompanys))
string[] companyArray = roleDataInfo.BelongCompanys.Split(',');
foreach (string company in companyArray)
if (!string.IsNullOrEmpty(company) && ValidateUtil.IsNumber(company.Trim()))
if (!companyList.Contains(company.ToInt32()))
companyList.Add(company.ToInt32());
panyList = companyL
//设置选定的公司ID
Cache.Instance["SelectedCompanyID"] = pany_ID;
//设置过滤条件给界面基类使用
Cache.Instance["DataFilterCondition"] = string.Format(" (Company_ID is null OR Company_ID = '{0}')", pany_ID);
其中CallerFactory方式调用,是以WCF的方式获取对应的数据库数据。在上面代码里面,有一个RoleDataInfo的实体类,这个就是用来承载用户角色的数据权限数据,其中包括了
BelongCompanys(所属公司)和 BelongDepts(所属部门 )的属性,我们把它解析为我需要的数据List&int& companyList 、&SelectedCompanyID 和&DataFilterCondition,当然如果有部门的控制,可以做的更多,我这里仅仅以医院机构进行区分即可。
SelectedCompanyID 就是用户选择查看的组织机构ID,DataFilterCondition就是用来构建一个数据过滤脚本,对用户看到的数据进行一个过滤筛选作用。我们把这两个数据内容,放到Winform的缓存里面,如果是Web可以用Session代替,这样可以在多个模块或者界面中方便访问使用。
为了实现用户选择不同的机构,所有打开的窗体数据实现相应的更新,那么我们需要处理公司选择的操作,具体实现代码如下所示。
private void txtCompany_EditValueChanged(object sender, EventArgs e)
//如果用户选择公司,以选择为主,否则以当前客户所在公司
if (this.txtCompany.EditValue != null)
CListItem item = this.txtCompany.EditValue as CListI
if (item != null)
//设置选定的公司ID
Cache.Instance["SelectedCompanyID"] = item.V
SetSelectedCompanyName();
//设置过滤条件给界面基类使用
string condition = string.Format(" Company_ID = '{0}'", item.Value);
Cache.Instance["DataFilterCondition"] =
//遍历全部窗口,更新
foreach (WHC.Framework.BaseUI.BaseDock form in this.MdiChildren)
form.SelectedCompanyID = item.V
form.DataFilterCondition =
form.FormOnLoad();
string message = string.Format("您已经切换数据显示:{0}", item.Text);
MessageDxUtil.ShowTips(message);
上面是对所有打开的窗体,传递了对应的信息,然后进行了刷新。那么我们在看看窗体本身内部的数据显示逻辑是如何的。
我们以病人资料的查询界面为例,根据不同的输入条件,对数据进行不同查询外,还增加了一个对组织机构过滤的条件,如下所示。
/// &summary&
/// 根据查询条件构造查询语句
/// &/summary&
private string GetConditionSql()
//如果存在高级查询对象信息,则使用高级查询条件,否则使用主表条件查询
SearchCondition condition = advanceC
if (condition == null)
condition = new SearchCondition();
condition.AddCondition("BedNo", this.txtBedNo.Text.Trim(), SqlOperator.Like);
condition.AddCondition("TumorPart", this.txtTumorPart.Text.Trim(), SqlOperator.Like);
........................
condition.AddDateCondition("InDate", this.txtInDate, this.txtInDateEnd);
condition.AddDateCondition("LeaveDate", this.txtLeaveDate, this.txtLeaveDateEnd);if (this.chkHasReferral.Checked)
condition.AddCondition("HasReferral", "是", SqlOperator.Equal, true);
...................
string where = condition.BuildConditionSql().Replace("Where", "");
//如果公司过滤条件不为空,那么需要进行过滤
if (!string.IsNullOrEmpty(this.DataFilterCondition))
where += string.Format(" AND {0}", this.DataFilterCondition);
return where;
/// &summary&
/// 绑定列表数据
/// &/summary&
private void BindData()
this.winGridViewPager1.DisplayColumns = "HandNo,BedNo,MidVideo,Name,Sex,IdentityCard,Age,Birthday,HospitalNo,IDNumber,InDate,InDiagnosis,SurgeryDate,DirectorSurgeon,LeaveDate,TumorPart,LeaveDiagnosis,IsFirstTime,LeaveSpecimens,OuterFilm,PreMRI,PreCT,PrePicture,MidPathology,AfterCTMRI,AfterPicture,AfterVideo,LeavePicture,Endocrine,Professor,Address,Telephone,HasReferral,ReferralDate,ReferralTime,Pathology,Note,Report";
this.winGridViewPager1.ColumnNameAlias = CallerFactory&IPatientService&.Instance.GetColumnNameAlias();//字段列显示名称转义
string where = GetConditionSql();
PagerInfo pagerInfo = this.winGridViewPager1.PagerI
List&PatientInfo& list = CallerFactory&IPatientService&.Instance.FindWithPager(where, ref pagerInfo);
this.winGridViewPager1.DataSource = new WHC.Pager.WinControl.SortableBindingList&PatientInfo&(list);
this.winGridViewPager1.PrintTitle = "病人基本资料信息报表";
以上绑定代码实现了:分页、条件查询、高级查询、字段列表显示、中文名称转义,以及最重要的,根据公司条件进行数据过滤的操作,从而让用户只能管理自己的数据。
以上就是结合权限管理系统模块,在应用系统中实现功能权限控制和数据权限的控制的操作例子和代码展示,希望对大家有帮助。

我要回帖

更多关于 戴尔3050mt 的文章

 

随机推荐