我是Umbraco CMS的新手。我在我的项目中使用了Ui-O-Matic插件
Ui-O-Matic允许数据库轻松进行CRUD操作。但我想使用backoffice控件,如file,textarea等。
所以我在database.cs文件中使用这样的UIOMaticFielld。
[Column("newsDetail")]
[UIOMaticField("News Detail","Add Details",View ="textarea")]
public string newsDetail { get; set; }
[Column("newsImage")]
[UIOMaticField("Image","Upload Image",View ="file")]
public string newsImage { get; set; }
问题是当我在数据库中进行任何更改时,我必须刷新database.tt文件以获取数据库更改。但它重新创建了database.cs文件和我以前的更改:
[UIOMaticField("News Detail","Add Details",View ="textarea")]
从database.cs文件中删除。每次我都要做同样的改变
请指导我该怎么办保持我的自定义更改即使我刷新database.tt文件?
其他更好的做CRUD操作的方法也是可取的。
答案 0 :(得分:1)
经过google搜索后,我发现当database.cs文件是自动生成的时候,我不能在其中进行自定义更改。
我找到了另一种使用后台控件的方法。让我在这里解释一下,可能对其他人有所帮助。
而不是在databse.cs文件中编写UIOMatoicField,创建模型来做同样的事情。
在“Models / Generated / database.tt”文件中进行以下更改
// Settings
ConnectionStringName = "umbracoDbDSN"; // Uses last connection string in config if not specified
Namespace = "Generator";
RepoName = "";
GeneratePocos = true;
ClassPrefix = "";
ClassSuffix = "";
// Read schema
var tables = LoadTables();
tables["Course"].Ignore = true; // Prevents table to include in databse.cs file
tables["News"].Ignore = true;
if (tables.Count>0)
{
#>
<#@ include file="UIOMatic.Generator.ttinclude" #>
<# } #>
然后创建新模型,如下所示。对于前者“Models \ NewsModel.cs”
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using UIOMatic.Attributes;
using UIOMatic.Enums;
using UIOMatic.Interfaces;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.DatabaseAnnotations;
namespace EdumentUIOMatic.Models
{
[Umbraco.Core.Persistence.TableName("News")]
[PrimaryKey("newsId")]
[UIOMatic("News", "icon-box-open", "icon-box-open", RenderType = UIOMaticRenderType.List, ConnectionStringName = "umbracoDbDSN")]
public class NewsModel: IUIOMaticModel
{
[UIOMaticIgnoreField]
[Column("newsId")]
public int newsId { get; set; }
[Column("newsTitle")]
[UIOMaticField("News Title", "Add Title")]
public string newsTitle { get; set; }
[Column("newsDetail")]
[UIOMaticField("News Detail", "Add Details", View = "textarea")]
public string newsDetail { get; set; }
[Column("newsImage")]
[UIOMaticField("Image", "Upload Image", View = "file")]
public string newsImage { get; set; }
[Column("isDeleted")]
[UIOMaticField("Hide News", "Check if you want to hide this news")]
public bool isDeleted { get; set; }
[System.Web.Http.AcceptVerbs("GET", "POST")]
public IEnumerable<Exception> Validate()
{
return new List<Exception>();
}
}
}
现在,如果您要重新加载database.tt文件以获取更新的数据库,则不会删除您的代码。