我读过这篇文章,但仍然误解了关键时刻.我们不需要打电话
_context.SaveChanges()
Run Code Online (Sandbox Code Playgroud)
在每个删除/更新/ ...操作?
如果我更改任何实体的属性确实SaveChanges()提交结果到数据库或我必须手动设置EntityState.Modifyed?
这是我的代码:
public class Repository<T> : IRepository<T>
where T : class
{
private IDbContext _context;
public Repository(IDbContext context)
{
_context = context;
}
private IDbSet<T> DbSet
{
get
{
return _context.Set<T>();
}
}
#region IRepository<T> Members
public void Insert(T entity)
{
DbSet.Add(entity);
}
public void Delete(T entity)
{
DbSet.Remove(entity);
}
public IQueryable<T> SearchFor(Expression<Func<T, bool>> predicate)
{
return DbSet.Where(predicate);
}
public IQueryable<T> GetAll()
{
return DbSet;
}
public T GetById(int id) …Run Code Online (Sandbox Code Playgroud) 这是我的实体:
[Table( Name = "PdfMeta" )]
public class Meta
{
[Key()]
public int Id { get; set; }
[Column(Name = "TotalPages")]
public int TotalPages { get; set; }
[Column(Name = "PdfPath")]
public string PdfUri { get; set; }
[Column(Name = "ImagePath")]
public string ImageUri { get; set; }
[Column(Name = "SplittedPdfPath")]
public string SplittedFolderUri { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是来自上下文的代码:
public DbSet<Meta> PdfMeta { get; set; }
Run Code Online (Sandbox Code Playgroud)
为什么用TableUri,PdfUri ...列创建新表(Metas)?我知道这是按惯例完成的,但我已经明确指定了表和列.
我是WCF的新手,并开始使用一个简单的无文件应用程序,其中一部分(web.config)可以在下面看到:
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
<serviceActivations>
<add
factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="./RelativeAddress.svc"
service="WCF_Transactions.MyService1"/>
</serviceActivations>
</serviceHostingEnvironment>
Run Code Online (Sandbox Code Playgroud)
现在我可以访问服务了
http://localhost:18148/RelativeAddress.svc
Run Code Online (Sandbox Code Playgroud)
然后我添加下一行:
<services>
<service name="WCF_Transactions.MyService1" behaviorConfiguration="MyBehavior1">
<host>
<baseAddresses>
<add baseAddress="http://localhost:18148/" />
</baseAddresses>
</host>
<endpoint address="/RelativeAddressX.svc" binding="basicHttpBinding" contract="WCF_Transactions.IService1"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehavior1">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)
所以我希望我的服务可以通过下一个地址访问:
http://localhost:18148/RelativeAddressX.svc
Run Code Online (Sandbox Code Playgroud)
但我不能这样做.我误解了什么?
这是我拆分大型 PDF (144 mb) 的方法:
public int SplitAndSave(string inputPath, string outputPath)
{
FileInfo file = new FileInfo(inputPath);
string name = file.Name.Substring(0, file.Name.LastIndexOf("."));
using (PdfReader reader = new PdfReader(inputPath))
{
for (int pagenumber = 1; pagenumber <= reader.NumberOfPages; pagenumber++)
{
string filename = pagenumber.ToString() + ".pdf";
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileStream(outputPath + "\\" + filename, FileMode.Create));
document.Open();
copy.AddPage(copy.GetImportedPage(reader, pagenumber));
document.Close();
}
return reader.NumberOfPages;
}
}
Run Code Online (Sandbox Code Playgroud)
对于大多数 PDF(小尺寸,我猜是旧格式),一切正常。但是对于更大的(可能使用 refstream 之类的东西来进行更好的压缩),拆分的页面会作为一页打开,但其大小等于原始 PDF 的大小。我能做什么?
如何从web api控制器指定return xml?在一个浏览器中,数据以XML格式打开,在另一个浏览器中以JSON格式打开.
编辑
这是我的行动:
[HttpGet]
public IEnumerable<MagazineMeta> GetLastUploadPdfMeta(int count)
{
List<MagazineMeta> metas = _metaRepository
.GetAll()
.OrderBy(e => e.TimeAdd)
.Take(count)
.ToList();
return metas;
}
Run Code Online (Sandbox Code Playgroud) c# ×4
asp.net-mvc ×1
itext ×1
savechanges ×1
storing-data ×1
wcf ×1
wcf-binding ×1
web-config ×1
xml ×1