Tag: 数据库

在.NET上建议一个简单的ORM – 用于维护遗留应用程序的设计

我被指派维护一堆遗留应用程序,这些应用程序在05年没有ORM之前构建了大量的存储过程。 与我合作的开发人员不了解entity framework,也不了解LINQ,也不急于学习。 .NET上是否有ORM为现有数据库表和存储过程提供简单的对象接口? 我很高兴它能让我编写几行代码来获取每个表的类,并且它具有与每列中的数据相对应的属性以及解决外键关系/多对多关系的一些方法或属性 – 转发并反转。 例如,保存一个员工和部门记录 Employee e = new Employee(“John”, null); Department d = new Department(“QA”); d.save(); e.department = d; e.save(); 无需编写INSERT SQL语句。 编辑:我正在使用MS SQL Server 2008

C#在单独的线程中连接到数据库

我有一个位于任务栏中的应用程序,并定期检查数据库(通过SQLConnection)。 如果数据库无法访问,它只会在通知图标上显示红色状态,而不显示任何其他内容。 这是因为用户将使用在设施之间旅行的笔记本电脑,并且数据库只能在内部网络上或通过VPN连接时访问。 我遇到的问题是,当数据库无法访问时,我仍然希望通知图标上下文菜单能够响应。 目前,如果用户在数据库尝试连接时尝试与菜单进行交互,则线程会被连接尝试锁定。 我想要的是数据库连接发生在一个单独的线程中,但我知道在线程之间共享连接对象是一件坏事。 数据库连接后,我需要从原始线程查询它。 有没有好办法呢? 我知道我可以在新线程中使用rus函数并简单地检查连接是否失败,然后如果返回成功,原始线程可以继续并连接它自己的数据库对象。 但这种方法似乎是一个糟糕的解决方法。 想法? 谢谢! 感谢您的建议 – 我从他们那里学到了很多东西。 最后,我做了我应该从一开始就做的事情。 每当需要定期更新数据库时,主(UI)线程就会启动一个新线程(包括数据库对象创建和连接)。 因此,就像HenkHolterman在对我的原始消息的评论中所建议的那样,我真的不需要创建数据库并在单独的线程中使用它运行操作。 一旦我升级到VS2010,我一定会对使用SqlConnection.OpenAsync感兴趣。 再次感谢。

没有sql server的本地数据库

我正在创建一个C#应用程序,我将安装在一些低端PC上。 我可以在低端机器上安装的只是.NET框架。 我想使用某种数据库,以便我可以存储应用程序将从互联网上抓取的信息。 任何人都可以建议我如何处理这个问题? 我无法安装任何版本的SQL Server。 谢谢。

如何从C#函数的存储过程返回多个输出参数

我正在使用输出参数从我的数据库中获取值。 这是我的存储过程: ALTER PROCEDURE [dbo].[sp_GetCustomerMainData] — Add the parameters for the stored procedure here @Reference nvarchar(100), @SubscriptionPIN nvarchar(100) OUTPUT, @SignupDate nvarchar(100) OUTPUT, @ProductCount int OUTPUT AS BEGIN — SET NOCOUNT ON added to prevent extra result sets from — interfering with SELECT statements. SET NOCOUNT ON; SET @SubscriptionPIN = ‘N/A’ SET @SignupDate = ‘N/A’ SET […]

DacPac在导出或导入时排除用户和登录

我正在做一些自动化,并在将一些10-15个古老,古怪的脚本重写为一个单一且简单的单元,它可以: 在生产环境中从MsSql2012导出数据库方案 在开发环境中将数据库方案导入MsSql2012 我这样做使用Microsoft.SqlServer.Dac我可以导出/导入dac包。 它工作得很好:),但在完成所有TDD和测试之后,现在是真实的时间了,结果我完全错过了我的工作中有2个域。 这意味着当我在开发环境中导入dacpac时出现错误,因为我们的2个域没有完全双向信任,当然数据库也有来自两个域的用户。 特别是生产域用户。 我可以看到3个可行的解决方案 在环境之间获得完全信任。 但由于我的工作实施了高水平的安全性,因此不会发生这种情况。 在没有用户的情况下导入dacpac。 没有用户导出到dacpac。 我已经阅读了文档(当然这是模糊的),试图找到一组可以实现2)或3)的选项。 我测试了很多组合,但没有一个可以工作。 dac pac导入不断尝试创建用户并失败,因为生成用户无法在开发环境中进行validation。 我使用Deploy和Extract导出/导入。 可以在这里找到不同的选项: 提取: http : //technet.microsoft.com/en-us/library/microsoft.sqlserver.dac.dacextractoptions.aspx 部署: http : //technet.microsoft.com/en-us/library/microsoft.sqlserver.dac.dacdeployoptions.aspx 没有组合我找到了作品,我甚至读过post,表明它是DacPac中的一个错误。 但我不确定。 我现在正在研究的最后一个选项是使用GenerateScript方法,希望能够强制排除用户/登录,但我担心它也不会起作用。 见( http://technet.microsoft.com/en-us/library/hh753526.aspx )。 问题:如何在导出或导入中从我的dacpac中排除用户/登录? UPDATE 当前提取设置: IgnoreUserLoginMappings = true, VerifyExtraction = false, 当前部署设置: CreateNewDatabase = true, DeployDatabaseInSingleUserMode = true, DisableAndReenableDdlTriggers = true, IgnoreUserSettingsObjects = true, 更新 […]

C#unit testing – 生成模拟DataContexts / LINQ – > SQL类

我喜欢C#的新世界,我已经开始尝试我的玩具程序,我想开始编写一些unit testing。 我的代码目前通过DatabaseDataContext对象(* .dbml文件)使用数据库,为这个对象创建模拟的最佳方法是什么? 鉴于生成数据库LINQ – > SQL代码是多么容易,以及请求的常见程度,我希望VS2010具有内置function来帮助进行测试。 如果我要离开,这必须手动完成,请你告诉我你的首选方法? 非常感谢, 加文

Log4Net没有写入数据库

我检查了连接字符串(我从服务器资源管理器中获取)。 我在log4net config中检查了commandText。 我已经检查了数据库权限(集成安全性很好,并且在log4net类之外工作)。 我已经检查了存储库的配置属性(它已配置,它找到配置文件正常)。 我还检查了配置文件中定义的字段是否与数据库中表的属性(字段大小等)匹配。 有任何想法吗? 当我正在调试它似乎在所有正确的时间点击所有正确的方法,没有例外提出。 <!—-> …more parameters 它写的都不是appender。

将entity framework中的字符串列映射到枚举

有没有办法将字符串列映射到实体模型中的枚举? 我在Hibernate中做过这个,但是无法在EMF中弄明白。

处理Datarow DBNull的最佳方法

可能重复: 检查数据表中是否包含空值的最佳方法 我想知道检查DBNull的DataTable – DataRow值的方法应该是什么。 防爆 我有一个DataRow,它从行类型中获取数据库中的信息,如: varchar,money,Int等。 应该用什么(简单而甜蜜)的方法来处理这种情况。

在服务器端提供指纹比较的最佳方法

我将通过WebAPI从服务器端提供指纹认证。 以下代码是指纹比较部分。 var allFingerprints = container.Fingerprints.OrderByDescending(p=>p.FingerprintID); List fmdList = new List(); foreach (var fp in allFingerprints) { fmdList.Add(Fmd.DeserializeXml(fp.FMD)); } IdentifyResult identifyResult = Comparison.Identify(customerFmd, 0, fmdList, thresholdScore, 2); 如果DB中有少量(<3000)指纹,我认为可以从DB读取指纹并进行比较。 但是,如果指纹的数量越来越大,服务器稍后会从客户端获得大量API调用,那么从数据库读取指纹并进行比较的最佳方法是什么? 我是否必须将指纹列表保留在内存中并进行比较? 感谢您提前提出的宝贵意见。