Tag: 亚音速

Subsonic 3 ActiveRecord嵌套选择NotIn bug?

我有以下Subsonic 3.0查询,其中包含嵌套的NotIn查询: public List GetRandomOrdersForNoReason(int shopId, int typeId) { // build query var q = new SubSonic.Query.Select().Top(“1”) .From(“Order”) .Where(“ShopId”) .IsEqualTo(shopId) .And(OrderTable.CustomerId).NotIn( new Subsonic.Query.Select(“CustomerId”) .From(“Customer”) .Where(“TypeId”) .IsNotEqualTo(typeId)) .OrderDesc(“NewId()”); // Output query Debug.WriteLine(q.ToString()); // returned typed list return q.ExecuteTypedList(); } 内部查询似乎不正确: SELECT TOP 1 * FROM [Order] WHERE ShopId = @0 AND CustomerId NOT IN (SELECT CustomerId […]

使用带有String的Subsonic.Select()ExecuteTypedList方法

这是一个关于generics而不是亚音速的问题: 想象一下,如果有以下代码: List result = DB.Select(Product.Columns.Id) .From() .ExecuteTypedList(); 这很好用,并返回一个包含我的Product表中的ID的通用列表。 但是,如果我想获得ProductName的列表: List result = DB.Select(Product.Columns.ProductName) .From() .ExecuteTypedList(); 它会抛出编译器消息(翻译自德语): “string”必须是非抽象类型,具有不带参数的公共构造函数,以便用作generics类型或在generics方法“SubSonic.SqlQuery.ExecuteTypedList()”中用作参数“T”。 cause:String没有空的构造函数: int i = new int; // works String s = new String; // compiler error: “string” does not contain a constructor that takes ‘0’ argument 如果我使用List而不是它有效 ,但是有更优雅的方式,我可以使用List吗? 更新: List不起作用。 我确实得到了一个对象列表,但这似乎是“空”对象,不包含我的ProductNames(object.ToString()返回{Object} )

使用LINQ和SubSonic进行对象映射

我正在使用SubSonic 3.0.0.3 ActiveRecord构建一个小项目,我遇到了一个似乎无法解决的问题。 这是LINQ查询: var result = from r in Release.All() let i = Install.All().Count(x => x.ReleaseId == r.Id) where r.ProductId == productId select new ReleaseInfo { NumberOfInstalls = i, Release = new Release { Id = r.Id, ProductId = r.ProductId, ReleaseNumber = r.ReleaseNumber, RevisionNumber = r.RevisionNumber, ReleaseDate = r.ReleaseDate, ReleasedBy = r.ReleasedBy } }; […]

如何在C#中为运行时加载程序集及其所有依赖项以进行reflection?

我正在为自己编写一个实用程序,部分原因是为了学习C#Reflection而且部分是因为我实际上想要自己使用的结果工具。 我所追求的是基本上将应用程序指向程序集并选择一个给定的类,从中选择应作为字段包含在导出的HTML表单中的属性。 然后,该表单将在我的ASP.NET MVC应用程序中用作View的开头。 因为我正在将Subsonic对象用于我想要使用的应用程序,所以这应该是合理的,我想通过想要根据数据类型包含不同输出HTML之类的东西,Reflection就是完成这项工作的方法。 然而,我正在寻找的东西似乎难以捉摸。 我正在尝试将通过OpenFileDialog选择的DLL / EXE作为起点并加载它: String FilePath = Path.GetDirectoryName(FileName); System.Reflection.Assembly o = System.Reflection.Assembly.LoadFile(FileName); 这工作正常,但由于Subsonic生成的对象实际上充满了在Subsonic.dll等中定义的对象类型,因此不会加载这些依赖对象。 输入: AssemblyName[] ReferencedAssemblies = o.GetReferencedAssemblies(); 那也包含了我所期望的。 但是,我想弄清楚的是如何加载这些程序集,以便我挖掘到我的对象将正常工作。 我理解,如果这些程序集在GAC或正在运行的可执行文件的目录中,我可以按名称加载它们,但对于这个用例而言可能不是这种情况,这是我的主要用例。 因此,它归结为如何加载给定的程序集及其所有任意程序集以文件名开头,并生成一个完全reflection可浏览的类型,属性,方法等树。 我知道像Reflector这样的工具可以做到这一点,我找不到获取它的语法。

使用亚音速交易

在我的Web应用程序中,我要继续审核用户操作。 因此,每当用户执行操作时,我都会更新执行操作的对象,并保留该操作的审计跟踪。 现在如果我先修改对象然后更新审计跟踪但审计跟踪失败那么呢? 显然我需要回滚对修改过的对象的更改。 我可以在简单的应用程序中使用Sql-Transactions,但我使用Subsonic与db通信。 我怎么能处理这种情况?

亚音速ORM体验

我正在寻找一个重要项目的新ORM,我习惯使用ActiveRecord进行nHibernate,而且我已经对EF4,性能和崩溃的GUI有了非常糟糕的体验。 所以在网上搜索我找到了Subsonic,我喜欢我在文档中看到的内容。 所以,我想知道是否有人已经使用过Subsonic并且体验是否良好。

SubSonic 3 Linq投射匿名类型而不是类类型

我是SubSonic 3 / Linq的新手,不知道我是否遗漏了一些明显的东西,但我想我遇到了投影问题。 我正在尝试执行最基本的查询,并且只有在我使用匿名类型时才能获得正确的结果。 我将匿名类型与常规类类型交换的那一刻,我将所有属性设置为null / zero。 我正在制作一个DAL类库,所以很遗憾,匿名类型不是一个选项。 片段 using System; using System.Linq; using Fruits.Data; namespace FruitTest { class Program { static void Main(string[] args) { var db = new FruitsDB(); var fruits = from f in db.Fruits select new FruitView { MyFruitID = f.FruitID, MyFruitName = f.FruitName, }; foreach (var f in fruits) […]

如何判断用户是否使用bindingsource修改了数据?

我有一个DataGridView绑定到绑定到List的绑定源。 用户单击转到带有文本框等的表单的行。文本框是数据绑定的,如下所示: if (txtID.DataBindings.Count == 0) txtID.DataBindings.Add(“Text”, bindingSource, “Title”); 我希望能够检测到用户在单击关闭按钮时是否修改了控件中的任何数据,因此我可以提示他们说“您有未保存的工作。是否要保存?” 如何在绑定源上检测到这一点? 更新:我已经知道我可以使用bindingSource.EndEdit()将更改推送到列表中的项目。 在我的项目中,我可以说,如果Dirty抛出一个Messagebox但是如果他们点击“No”来保存信息,则CancelEdit不起作用。