J K*_*ing 1 sql dotnetnuke petapoco dotnetnuke-7
我已经开始在 dotnetnuke 7 中使用 DAL2。我有一些复杂的查询,我已经在我的实例使用的 SQL 服务器数据库中创建了视图。从这些视图访问简单选择的最佳实践是什么。
如果我使用以下内容,那么这会绕过 dbOwner 和 ObjectQualifier:
Public Function GetProducts_Short_Active() As IEnumerable(Of Object)
Using ctx As IDataContext = DataContext.Instance
Return ctx.ExecuteQuery(Of Object)(CommandType.Text, "SELECT * FROM dbo.vw_ProductList_Short_Active", Nothing)
End Using
End Function
Run Code Online (Sandbox Code Playgroud)
问题: 或者我应该为每个 sql-server-view 定义一个类和属性(就像我为每个表所做的那样),表名注释是视图的名称,如下所示?
<TableName("vw_ProductList_Short_Active")> _
<PrimaryKey("ProductId")> _
<Cacheable("ProductList_Short_Active", CacheItemPriority.Default, 20)> _
<Scope("PortalId")>
Public Class ProductList_Short_Active
''view properties go here
End Class
Run Code Online (Sandbox Code Playgroud)
这篇文章似乎表明我不应该使用视图,而是使用 iEnumerable 的可忽略列扩展我的产品类,这些列代表我需要的“连接”数据记录。那是准确的吗?
小智 5
我已经通过几种方式做到了这一点。
如果您不需要更新或插入视图的表,我认为使用视图是一个很好的方法。我已经成功地将视图用作 DAL2 表,但即使它是模式绑定的,也只有 GET 可以工作。如果您只是阅读数据,那是最好的方法。
我还通过从 respoitory 方法加入子数据来做到这一点。在本文中(完整源代码在相关文件部分),我有一个基于具有 ignorecolumn 属性的表的 DAL2 对象。
[TableName("DNNuclear_DataVisualizer_Chart")]
[PrimaryKey("ChartId", AutoIncrement = true)]
[Cacheable("Charts", CacheItemPriority.Default, 20)]
[Scope("ModuleId")]
public class Chart
{
///<summary>
///</summary>
public int ChartId { get; set; }
...
[IgnoreColumn]
public IList<SeriesData> SeriesData { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
}
该属性在 DAL2 存储库方法中填充。
public Chart GetItem(int itemId)
{
Chart t;
using (IDataContext ctx = DataContext.Instance())
{
var rep = ctx.GetRepository<Chart>();
t = rep.GetById(itemId);
var repD = ctx.GetRepository<ChartData>();
var data = repD.Get(itemId);
if (data != null && data.Count() > 0)
{
// Get unique categories
var uniqueCategories = data.OrderBy(x => x.Category).Select(x => x.Category).Distinct();
t.Categories = uniqueCategories.ToList();
// Get series data
t.SeriesData = getSeriesData(data, t.Categories.ToArray<string>());
}
}
return t;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2412 次 |
| 最近记录: |