标签: subsonic3

SubSonic 3.0中的SQL视图

有什么办法可以在SubSonic 3.0中访问我的SQL视图吗?代码生成似乎完全跳过了视图

subsonic subsonic3

13
推荐指数
2
解决办法
2073
查看次数

对象到表的亚音速自定义映射

我正在使用Compact Framework 3.5并暂时确定了用于进行数据访问的Customonic 3.0的自定义构建.问题是我习惯于先开发模型,但我也对保持对数据库模式的控制感兴趣.因此,ActiveRecord或Repository似乎都不能满足我的需求,我想使用我现有的POCO模型并将其映射到我现有的表.我习惯通过NHibernate和Entity Framework来做这件事.

经过一些调查后,似乎我可以创建自定义QueryMapping来为我提供我想要的自定义映射.然而,在我开始这条道路之前,我想看到一些这样的例子.我似乎无法在网上找到任何内容,并想知道是否有人可以提供有关Subsonic,模型优先和自定义Table-per-Type和Table-per -ierarchy映射的经验的输入.

.net orm poco subsonic3

13
推荐指数
1
解决办法
407
查看次数

从作用域引用的'Product'类型的变量'x',但未定义

我有一个Product在类库项目中命名的类.我SubSonic SimpleRepository用来坚持对象.我在Product课堂上有如下方法:

public static IList<Product> Load(Expression<Func<Product, bool>> expression)
{
    var rep=RepoHelper.GetRepo("ConStr");
    var products = rep.Find(expression);
    return products.ToList();
}
Run Code Online (Sandbox Code Playgroud)

我正在调用这个函数:

private void BindData()
{
    var list = Product.Load(x => x.Active);//Active is of type bool
    rptrItems.DataSource = list;
    rptrItems.DataBind();
}
Run Code Online (Sandbox Code Playgroud)

调用LoadBindData引发异常:

variable 'x' of type 'Product' referenced from scope '', but it is not defined
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题.

编辑: - 通过单步执行SubSonic代码,我发现该函数抛出了错误

private static Expression Evaluate(Expression e)
{
    if(e.NodeType == ExpressionType.Constant)
        return e; …
Run Code Online (Sandbox Code Playgroud)

c# lambda subsonic3 linq-expressions

11
推荐指数
1
解决办法
9284
查看次数

Subsonic 3.0.0.3不为存储过程生成参数

我有一个带有一堆存储过程的SQL Server 2008数据库.当我使用Subsonic 3.0.0.3提供的ActiveRecord模板时,它会为我的所有存储过程生成方法,但它们没有任何参数.我是服务器上的dbo,可以执行存储过程,而没有来自Management studio的问题.

示例存储过程

CREATE PROCEDURE [dbo].[prc_Sample]
    @FileName   VARCHAR(50)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    IF EXISTS ( SELECT * FROM Sample WHERE FileName = @FileName )
    BEGIN
        RETURN -1
    END

    RETURN 0

END
Run Code Online (Sandbox Code Playgroud)

样本生成方法

public StoredProcedure prc_Sample(){
    StoredProcedure sp=new StoredProcedure("prc_Sample",this.Provider);
    return sp;
}
Run Code Online (Sandbox Code Playgroud)

如果我检查SQLServer.ttinclude,我可以看到所有获取存储过程的方法都存在,但由于某种原因它们没有生成.这不是存储过程名称中有下划线的问题 - 这可以在有和没有下划线的情况下被破坏.

任何想法或任何人都知道如何调试模板文件?

subsonic templates stored-procedures subsonic3

8
推荐指数
1
解决办法
1389
查看次数

未来证明DAL

我们正处于一个包含多个子项目的长期开发项目的开端.基本上每个子项目都需要几个月的时间来开发.代码本身将分成几个C#项目,但物理数据库将由所有项目共享.

问题是可维护性.如果我们向表中添加一个列,或者将一个表拆分成两个较小的表,我们将不得不返回并修改我们的C#DAL以支持这些更改.这是不可接受的,因为我们将不断调整数据库以满足整个公司的需求,而不仅仅是单个程序的需求.不断改变旧代码将是一项无休止的任务.

我们的DB人员提出了不同的观点.我们通过存储过程完成所有CRUD,并在几个表中使用Linq来执行SELECT语句.然后,如果我们从现在起几年后重构数据库,我们可以简单地提供相同的存储过程和视图,而不必修改我们的旧代码.

我们的问题是,ORM应该用于这样的事情吗?EF似乎有点矫枉过正(可能不是).像SubSonic这样的T4模板是否适合简化(也许更快)DAL?

或者也许有人知道如何让整个过程不那么痛苦?我们宁愿不在我们的应用程序中添加另一个层,但我们也不想每次进行db更改时返回并修改代码.

编辑1:所以当我说"我真的不想添加更多图层"时.这主要是因为我们已经有几层.我们有Silverlight视图,视图模型,BLL对象(通过CSLA)然后我们有DAL,最后是SQL表格.

c# t-sql entity-framework data-access-layer subsonic3

8
推荐指数
1
解决办法
378
查看次数

亚音速3 VS实体框架

任何与Subsonic3和Entity Framework合作的人都能告诉我利弊吗?这是我第一次尝试尝试这些.Subsonic很容易设置,因此实体框架.我不确定Entity Framework是否可以与其他数据库一起工作,因为SubSonic就像MySql PGsql等...?我读了这篇文章(http://www.timacheson.com/Blog/2009/jun/entity_framework_vs_subsonic),它足以令人信服地选择Entity Framework而不是SubSonic.但我想要第二次开幕.

subsonic entity-framework subsonic3

7
推荐指数
1
解决办法
5144
查看次数

将DataAnnontations添加到生成的部分类

我有一个Subsonic3 Active Record生成的部分User类,我在一个单独的部分类中扩展了一些方法.

我想知道是否有可能将数据注释添加到一个部分类的成员属性中,它在另一个我尝试过的Subonic Generated上声明它.

public partial class User
{
    [DataType(DataType.EmailAddress, ErrorMessage = "Please enter an email address")]
    public string Email { get; set; }

    ...
}
Run Code Online (Sandbox Code Playgroud)

该示例给出了"已定义成员"错误.

我想我之前可能已经看过一些关于我正在尝试使用Dynamic Data和Linq2Sql的例子.

subsonic validation partial-classes subsonic3 data-annotations

7
推荐指数
1
解决办法
2598
查看次数

基准测试Linq2SQL,Subsonic2,Subsonic3 - 还有其他想法可以让它们更快吗?

我正在与Subsonic 2合作超过3年......

在Linq出现,然后是Subsonic 3之后,我开始考虑转移到连接到sql的新Linq期货.

我必须说我开始移动并用SubSonic 3移植我的亚音速2,很快我就发现速度太慢而我不相信 - 并开始所有的测试.

然后我测试Linq2Sql并看到延迟 - 将它与Subsonic 2进行比较.

我的问题是,特别是linq2sql和即将推出的dotnet版本4,我还能做些什么来加快速度呢?linq2sql设置或类上还有什么,而不是我用于我的烦恼的代码

我在这里放置了我进行测试的项目,以及结果的屏幕截图.

我如何进行测试 - 以及我的措施的准确性.

我只使用我的问题谷歌chrome,因为我很难在这里展示我用更复杂的程序做的很多其他措施.这是最简单的一个,我只测量数据读取.我怎么能证明这一点.我做了一个简单的Thread.Sleep(10秒),看看我是否在Google Chrome Measure上看到了10秒,是的,我看到了.

http://www.planethost.gr/GoogleChromeFastSpeedMesure.gif

这里有更多的测试,这个Sleep thead看看Chrome实际上是什么.

10秒延迟
100 ms延迟
零延迟

只有一个小的15毫秒可以搞定,它是如此之小,与我不关心的其他测试相比.

所以我衡量的是什么

我只测量通过每种方法读取的数据 - 没有计算数据或数据库延迟,或任何磁盘读取或类似的东西.稍后在带有结果的图像上,我显示测量中没有磁盘活动.
请参阅此图像以查看我真正测量的内容以及这是否正确

为什么我选择这种测试

它很简单,它是真实的,而且接近我真正的问题,我发现实际程序中亚音速3的延迟与实际数据有关.

现在让我们测试一下dals

首先看这个图像 我对每个方法都有4-5个调用,一个接一个.

结果是.对于100次循环,请求5行,一行不存在,近似...

简单的adonet:81ms
SubSonic 2:210ms
linq2sql:1.70sec
linq2sql使用CompiledQuery.Compile:239ms
亚音速3:15.00sec(哇 - 极慢)

该项目 http://www.planethost.gr/DalSpeedTests.rar


任何人都可以确认这个基准,或进行任何优化来帮助我吗?

其他测试

有人在这里发布这个链接http://ormbattle.net/(然后删除它 - 不知道为什么)在这个页面你可以找到一个非常有用的高级测试,除了我在这里的亚音速2和亚音速3!

优化

我在这里真正要问的是,如果有人能够如何优化DAL,不是通过更改测试代码,而是通过更改每个dal上的代码和设置.例如...

优化Linq2SQL

我开始搜索如何优化Linq2sql并找到 这篇文章,也许更多的存在.

最后,我从该页面开始运行,并使用它们优化代码.速度从1.70开始接近1.50秒....大幅改善,但仍然缓慢.

然后我发现了一种不同的方式 - 同样的想法文章,哇!速度很快. 使用CompiledQuery.Compile的这个技巧,1.5秒的时间现在是239ms. 这是预编译的代码......

Func<DataClassesDataContext, int, IQueryable<Product>> compiledQuery …
Run Code Online (Sandbox Code Playgroud)

subsonic performance benchmarking subsonic3 linq-to-sql

7
推荐指数
1
解决办法
941
查看次数

SubSonic 3.0中的关系和延迟加载

我现在正在玩SubSonic 3.0,它看起来非常简单(除了我还需要在SimpleRepository和ActiveRecord之间做出决定,但这是另一个故事).

但是,由于文档有点稀疏,我不确定它是否支持外部关系和延迟加载.基本上,我有一个课程发布:

public class Posting {
    [SubSonicPrimaryKey]
    public Guid InternalId { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }
    public DateTime? PostingDate { get; set; }
    public List<Comment> Comments { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和一个评论:

public class Comment
{
    public string Body { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,Posting有一个评论列表.我能以某种方式告诉SubSonic这两者是否相关?那就是我保存帖子时可以自动保存所有评论?更重要的是,当我加载一个帖子时,我希望评论列表最初是空的,并且在某些时候说"好的,请立即填充".

我知道我可以在Code中手动管理它,但我想知道SubSonic是否可以在我做手动工作之前做到这一点.

.net subsonic orm subsonic3

6
推荐指数
1
解决办法
2290
查看次数

Subsonic 3 - SimpleRepository

我正在玩Subsonic 3的简单存储库,并且正在了解如何处理外键...

如果我有一个包含的产品对象

int ID; 

string name; 

string description; 

Category category; 

int categoryID (this one is just to persist the product's categoryID to the DB)

and a category object containing 

int ID; 

string name;
Run Code Online (Sandbox Code Playgroud)

如何使用存储库返回实例化其类别对象的所有产品的列表?

目前我已经编写了一个连接在product.categoryID = category.ID上的linq查询,这一切都很好,但是当我.ToList()查询结果时,产品的类别没有实例化.

有没有办法做到这一点,还是我必须手动实例化每个产品的类别?

谢谢,

保罗

.net c# subsonic repository subsonic3

6
推荐指数
1
解决办法
1587
查看次数