c# - 了解连接字符串属性

标签 c# .net connection-string

我是 C# 和所有 .net 的新手。我正在尝试使用测试控制台应用程序测试我的 Nhibernate 配置。

这是我的测试控制台应用程序

class Program
{
    static void Main(string[] args)
    {
        try
        {
            NHibernateBase NHB = new NHibernateBase();
            NHB.Initialize("NHibernate.GuitarStore");
            System.Console.WriteLine("NHibernate.GuitarStore assembly initialized.");
            System.Console.ReadLine();
        }
        catch (Exception ex)
        {
            string Message = ex.Message;
            if (ex.InnerException != null)
            {
                Message += " - InnerExcepetion: " + ex.InnerException.Message;
             }
        System.Console.WriteLine();
        System.Console.WriteLine("***** ERROR *****");
        System.Console.WriteLine(Message);
        System.Console.WriteLine();
        System.Console.ReadLine();
        }

        }
    }

当我运行上面的程序时,我收到错误:

***** ERROR *****
Login failed for user 'BUGZILLA\Silon'.

这是我的 app.config 中的连接字符串

connectionString="Data Source=localhost;Initial Catalog=myGuitarStore;Integrated Security=True

我认为这与连接字符串的集成安全部分有关。

问题是我不理解连接字符串中的属性(及其含义),而且我似乎找不到任何足够简单地解释它们的文章。

----以防万一您需要它来理解问题,这里是 NHibernateBase 类

 public class NHibernateBase
{
    private static Configuration Configuration { get; set; }
    protected static ISessionFactory SessionFactory { get; set; }
    private static ISession session = null;
    private static IStatelessSession statelessSession = null;

    public static Configuration ConfigureNHibernate(string assembly)
    {
        Configuration = new Configuration();
        Configuration.AddAssembly(assembly);
        return Configuration;
    }

    public void Initialize(string assembly)
    {
        Configuration = ConfigureNHibernate(assembly);
        SessionFactory = Configuration.BuildSessionFactory();
    }

    public static ISession Session
    {
        get
        {
            if (session == null)
            {
                session = SessionFactory.OpenSession();
            }
            return session;
        }
    }

    public static IStatelessSession StatelessSession
    {
        get
        {
            if (statelessSession == null)
            {
                statelessSession = SessionFactory.OpenStatelessSession();
            }
            return statelessSession;
        }
    }

    public IList<T> ExecuteICriteria<T>()
    {
        using (ITransaction transaction = Session.BeginTransaction())
        {
            try
            {
                IList<T> result = Session.CreateCriteria(typeof(T)).List<T>();
                transaction.Commit();
                return result;
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw ex;
            }
        }
    }

最佳答案

Integrated Security=True 只是意味着您正在使用 Windows 身份验证进行身份验证,而不是传递您的用户 ID 和密码并通过 sql server 本身进行身份验证。如果您不进行 Windows 身份验证,则只需将用户 ID 和密码作为连接字符串的一部分传递即可,请参阅 ConnectionStrings.com对于其他连接字符串格式,它可以工作。

您还可以看到这个MSDN描述每个连接字符串属性的文章

关于c# - 了解连接字符串属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17730529/

相关文章:

c# - 如何禁止逗号作为小数点分隔符

mysql - 如何防止执行过大的搜索?

.net - 构建具有集成安全性的 SQL 连接字符串以通过 VPN 使用?

.net - 使用正则表达式替换字符串

c# - 连接字符串格式和 SQL Server 登录错误

c# - 解析 EntityName 时出错。 Line1,位置 844

c# - 根据 const 值强制 C# 编译器错误

c# - 我的应用程序是否可以显示时间,而不管系统时间是否已被修改

c# - Entity Framework : table without primary key

c# - 使用相等运算符比较两个 floored double 是否安全?