⑴ 使用EF时,涉及到数据库分库,分表该怎么处理
您好,很高兴为您解答。
如果数据库是自动分的,那么任何客户端驱动都没有必要去管它。如果手工分,那就是访问不同的库、不同的表。
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
⑵ 用EF操作数据库 对多张表操作是否需要事务
对多张表进行操作是需要事务的。
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如sql,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
⑶ 为什么不能直接访问数据库
首先,如果都直接访问数据库,还要程序员做什么,人都会了。。
其次,没有人做数据逻辑的审核,数据错,录入错没人记录或者阻止(本来都是代码该完成的事),怎么办?会导致很严重的损失
再者就是权限问题。。
⑷ 请介绍一下ADO.NET框架下几种数据库访问技术的优缺点。详细一点
数据源控件访问数据库:简单快捷,但是真正的开发中不会去这样用的,因为1是效率问题2是灵活性不足,这就跟ASP.NET里面的其他控件一样,正的要做大应用是不会用这种东西的,因为扩展性不足,或者为了做到兼容性损失了效率。 使用.NET数据提供程序访问数据库:共有4种,SQL Server .NET Framework数据提供程序,OLEDB .NET Framework数据提供程序,ODBC .NET Framework数据提供程序,Oracle .NET Framework数据提供程序。看名字也该明白,针对不同的数据库使用不同的数据提供程序,这是开发中最经常使用的方式,缺点是米有办法应对多数据库的情况,也就是说假如你的应用是面向多数据库的,那么有几种数据库,基本要写几套SQL。 用DATASet:恭喜你不用写T-SQL了,但是你要学会它的语法,从此不用担心多数据库应用的问题。但是惨了,它为了兼容多种数据库因此T-SQL写的真的“很兼容”执行效率太低,同样的一个表现结果,这个SQL嵌套了好几次,效率灰常低。 LINQ to SQL:老实讲,他就是为SQL SERVER而生的,你也不用写T-SQL了,它的语法学学还是好处颇多,因因为你在LINQ TO OBJECT上也能见到这种语法的影子收益颇多,它的执行效率很快,但是不管怎么讲也没有你直接用SQL Server .NET Framework数据提供程序,自己写SQL快,可控制程度高,好处也是显而易见就像用DATASET一样,你不用再为了数据持久化问题写一大堆ORM的东西了。 by the way,目前.NET中,ORM用的比较多的是Nhibernate,但是你如果就想用SQL SERVER还是用LINQ to SQL吧,好处显而易见,在开发过程中对于数据库的变更也是比较常见的,你的数据库字段不知道会出现在哪个类,哪个文件中,如果用了DATASET,或LINQ2SQL在编译阶段你就可以察觉到这种变更带来的影响。
⑸ 使用EF时,涉及到数据库分库,分表该怎么处理
如果你的数据库自动分的,那么任何客户端驱动都没有必要去管它。如果是手工分的,那么不就是访问不同的库、不同的表嘛。
还是要搞清楚前一个问题:你怎样分。这个不清楚,就等于是在给自己“下套”了,在不知道分库分表的具体含义时来问这个时髦概念如何用EF来实现,无的放矢了。
⑹ 采用EF开发数据库,前台使用jqGrid直接获取数据。现在问题,如果有多表联合查询如何解决
若EF是采用代码优先生成数据库的话则需要修改EF中对应的Model的代码,即info中新增一列即可,不需要改动其他内容了;
若EF是采用根据现有数据库生成的话,需要在数据库对应表中添加一列,再重新生成EF的代码即可。
⑺ 使用asp.net EF疑问
你把上面2个搞糊涂了,你用的EF4.1 CODE FIRST吧,他是会根据你的model生成数据库,并且提供了一个默认的SQL连接。如果指定了字符串,那么就按照你指定的数据库来,如果有,在建表在里面,如果没有,就建立一个新数据库。然后,model跟表相关,跟数据库没关系。如果不能生成,应该是要报错的,sql实例不对,没权限什么的,你注意看看。
⑻ c# EF 数据库连接
如果只是想修改连接的计算机名(或者sql服务名),我试过下面的代码是成功的。我的步骤,先新建Model,运行成功,然后修改app.config里的连接字符串里的计算机名,运行报错,然后在用代码手动修改回正确的计算机名,运行成功。
staticvoidMain(string[]args)
{
NorthwindEntitiesen=newNorthwindEntities();
stringconstr=@"datasource=.sqlexpress;
initialcatalog=Northwind;integratedsecurity=True;
MultipleActiveResultSets=True;App=EntityFramework"";
en.Database.Connection.ConnectionString=constr;
Console.WriteLine(en.Employees.Count());
Console.ReadLine();
}
⑼ 为什么访问不了数据库
重置了IP就可以了。具体如下:
下面的步骤需要一些前提:
你的sqlserver服务已经安装了,就是找不到服务器名称。
1、打开Sql server 管理配置器
或者在命令行输入:SQLServerManager10.msc
2、点击MSSQLSERVER的协议,在右侧的页面中选择TCP/IP协议
3、右键点击TCP/IP协议,选择“属性”,需要修改连接数据库的端口地址
4、跳出来的对话框,里面有好多TCP/IP的端口,找到“IP3”,更改IP地址 为自己电脑的IP地址(或者是127.0.0.1) 在TCP端口添加1433,然后选择启动
5、“IPALL”的所有端口改成“1433”
6、重新启动服务
7、通过以上1-6步骤设置好端口,重新打开SQL Server Management Studio,在服务器名称输入:(local)或者127.0.0.1,即可登录数据库了。
注:脚本之家小编最近安装了sql2005也是碰到这个问题,就是参考这个修改ip的方法解决的。记得要安装sql 2005 sp3补丁
VS报错:
在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)
解决方法:开始->>SQLServer2005->>配置工具->>SQLServer外围应用配置器->>
服务和外围连接的应用配置器->>点击"远程连接"->>本地连接和远程连接->>同时使用TCP/IP和named Pipes->>点"确定"->>重启SQLserver服务可是我的电脑改不了,SQLServer外围应用配置器报错误信息:更改失败。(Microsoft.SqlServer.Smo) 其它信息: SetEnable对于ServerProtocol“Tcp”失败。(Microsoft.SqlServer.Smo)我找到了一个解决的办法。我的操作系统也是win7:点击SQL Server Configuration Manager中Sql Server 2005网络配置“MSSQLSERVER”协议,启动协议“TCP/IP”以及"Name Pipes"。并且停止,重新启动SQL Server服务。便可以了。
⑽ 用EF连接Oracle数据库,运行报错
数据库为Oracle,就不要使用EF了。
问题已经很明显。“Make sure the provider is registered in the 'entityFramework' section of the application config file”,就是让你看看在App.config文件中的<provider>。
【源文件中的内容如下】:
<entityFramework>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</entityFramework>
按理说,只要将<provider />写成:
<provider invariantName="Oracle.ManagedDataAccess.Client" type="System.Data.OracleProviderServices, EntityFramework.OracleServer" />
之类即可,但是可悲啊!
目前支持EF6的provider有:
(1)Microsoft SQL Server provider
(2)Microsoft SQL Server Compact Edition provider
(3)Devart dotConnect Data Providers 【注意】
(4)Firebird provider
(5)Visual Fox Pro porvider
(6)MySQL
(7)PostgreSQL
1、2、4、5、7均可以从NuGget中获取。3、7需要到相应的网站获取。
注意第三个:这个插件就是用于Oracle数据库的,其为第三方插件,由Devart公司开发。但有两大致命缺点:1、收费(是30天免费试用,过了30天要么卸载,要么付款)。2、目前支持的Oracle的最高版本为:Oracle8.2i。