我继承了一个 MVC 项目,该项目似乎使用 Telerik Open Access 来处理数据,而不是使用我更熟悉的实体框架之类的东西。我正在尝试了解如何使用此数据方法的整个概念,但现在我只需要了解如何添加表格。我将我的代码示例限制在一张表中,但实际上有几十个。
所以我看到类 OpenAccessContext.cs 有一个数据库连接字符串,但它也有一个由类 tblMaterial 组成的 IQueryable 项。tblMaterial 类在 tblMaterial.cs 中定义。我不明白这个类是如何连接到 tblMaterial 的 SQL 数据库版本的(所以请随时教育我)。
我在 SQL 数据库中有一个名为 tblContacts 的表。我需要做什么才能将其连接到我的项目?当我右键单击解决方案中的任何对象时,没有“从数据库更新”选项(因为它们都只是类)。我需要手动创建一个名为 tblContacts.cs 的新类吗?如果是这样,我如何将它连接到 tblContacts 的数据库版本?我是否需要手动更改多个类来添加表(OpenAccessContext、MetadataSources、Repository 等)?
我试图将其保留为一个简单的问题(如何添加表格),因此我不会感到厌烦,但是您可以在 Telerik Open Access 上发光的任何光线都会有所帮助。(请不要问我这个问题!)我在这里查看了 Telerik 文档:http: //docs.telerik.com/data-access/developers-guide/code-only-mapping/getting-started/fluent- mapping-getting-started-fluent-mapping-api,但它与设置新的开放访问解决方案有关。我需要知道如何修改一个(不破坏已经工作的代码)。预先感谢您的帮助!
这是在 Visual Studio 中看到的解决方案:
- 开放存取
- 特性
- 参考
- OpenAccessContext.cs
- OpenAccessMetadataSources.cs
- 存储库.cs
- tblMaterial.cs
这是代码:
OpenAccessContext.cs
namespace OpenAccess
{
public partial class OpenAccessContext : OpenAccessContext
{
static MetadataContainer metadataContainer = new OpenAccessMetadataSource().GetModel();
static BackendConfiguration backendConfiguration = new BackendConfiguration()
{
Backend = "mssql"
};
private static string DbConnection = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
private static int entity = ConfigurationManager.AppSettings["Entity"] == "" ? 0 : int.Parse(ConfigurationManager.AppSettings["Entity"]);
public OpenAccessContext() : base(DbConnection, backendConfiguration, metadataContainer)
{
}
public IQueryable<tblMaterial> tblMaterials
{
get
{
return this.GetAll<tblMaterial>(); //.Where(a => a.EntityId == entity);
}
}
}
}
OpenAccessMetadataSources.cs
namespace OpenAccess
{
public class OpenAccessMetadataSource : FluentMetadataSource
{
protected override IList<MappingConfiguration> PrepareMapping()
{
var configurations = new List<MappingConfiguration>();
// tblMaterial
var materialConfiguration = new MappingConfiguration<tblMaterial>();
materialConfiguration.MapType(x => new
{
MaterialId = x.MaterialId,
MaterialName = x.MaterialName,
MaterialDescription = x.MaterialDescription,
MaterialActive = x.MaterialActive,
MaterialUsageType = x.MaterialUsageType,
AddDate = x.AddDate,
AddBy = x.AddBy,
ModDate = x.ModDate,
ModBy = x.ModBy
}).ToTable("tblMaterial");
materialConfiguration.HasProperty(x => x.MaterialId).IsIdentity(KeyGenerator.Autoinc);
}
}
}
存储库.cs
namespace OpenAccess
{
public class Repository : IRepository
{
#region private variables
private static OpenAccessContext dat = null;
#endregion private varibles
#region public constructor
/// <summary>
/// Constructor
/// </summary>
public Repository()
{
if (dat == null)
{
dat = new OpenAccessContext();
}
}
#endregion public constructor
#region Material (tblMaterials)
public int CreateMaterial(tblMaterial itm)
{
try
{
dat.Add(itm);
dat.SaveChanges();
return itm.MaterialId;
}
catch (Exception)
{
return 0;
}
}
}
}
tblMaterial.cs
namespace OpenAccess
{
public class tblMaterial
{
public int MaterialId { get; set; }
public string MaterialName { get; set; }
public string MaterialDescription { get; set; }
public bool MaterialActive { get; set; }
public int MaterialUsageType { get; set; }
public DateTime? AddDate { get; set; }
public string AddBy { get; set; }
public DateTime? ModDate { get; set; }
public string ModBy { get; set; }
}
}