Coolstorage查询错误

时间:2012-12-13 11:59:28

标签: .net orm coolstorage vici

我一直在寻找Linq-To-SQL的开源替代品,遇到Vici CoolStorage,这非常适合我的需求(轻量级,开源,支持Access和SQL Server)。

但是,我在检索数据时遇到了一些麻烦(尽管它增加了数据),并且我使用2个不同的数据库在2个不同的环境中复制了同样的问题,所以显然这是我做错的事情,希望有人可以指出那是什么。

我创建了一个带有2个表的新的Access mdb - AccountStatus和Account。 AccountStatus包含AccountStatusID,AccountStatusName,而Account包含AccountID,AccountName,AccountStatusID。

我添加了Vici.CoolStorage和Vici.Core对我的项目的引用(使用NuGet),创建了一个Domain文件夹,并添加了以下两个类来映射到我的表:

AccountStatus:

using Vici.CoolStorage;

namespace ViciAccount.Domain
{
    [MapTo("AccountStatus")]
    public abstract partial class AccountStatus : CSObject<AccountStatus, int>
    {
        public abstract int AccountStatusID { get; set; }
        [ToString]
        public abstract string AccountStatusName { get; set; }

        [OneToMany(LocalKey = "AccountStatusID", ForeignKey = "AccountStatusID")]
        public abstract CSList<Account> Accounts { get; }
    }
}

帐户:

using Vici.CoolStorage;

namespace ViciAccount.Domain
{
    [MapTo("Account")]
    public abstract partial class Account : CSObject<Account, int>
    {
        public abstract int AccountID { get; set; }
        [ToString]
        public abstract string AccountName { get; set; }
        public abstract int AccountStatusID { get; set; }

        [ManyToOne(LocalKey = "AccountStatusID", ForeignKey = "AccountStatusID")]
        public abstract AccountStatus AccountStatus { get; set; }
    }
}

然后我将以下代码添加到要测试的Form的Load事件中:

if (!CSConfig.HasDB())
{
    CSConfig.SetDB(new CSDataProviderAccess(@"G:\FilePath\Test Project\ViciTest.mdb"));
    CSConfig.UseTransactionScope = false;
}

CSConfig.Logging = true;
CSConfig.LogFileName = @"G:\FilePath\Test Project\vici.log";

AccountStatus accountStatus = AccountStatus.New();
accountStatus.AccountStatusName = "Live";
accountStatus.Save();

accountStatus = AccountStatus.New();
accountStatus.AccountStatusName = "Closed";
accountStatus.Save();

CSList<AccountStatus> accountStatuses = AccountStatus.List();

MessageBox.Show(accountStatuses.Count.ToString());

它成功添加了“Live”和“Closed”记录,但是当我尝试查询CSList的Count时出现“Error execution query。可能的语法错误”,InnerException“对象引用未设置为实例一个对象。“。

有人有任何想法我在这里错了吗?

编辑:我已经将Vici.CoolStorage dll换成了Activa.CoolStorage dlls(找到了here at CodePlex,可以追溯到2008年),现在一切正常,所以它绝对是做最新版本(Vici是1.5,Activa是1.2)。旧版本似乎不支持SQL日志记录

0 个答案:

没有答案