开发者

Fluent Nhibernate - One to One Mapping - Update/Delete

I have two classes Office and FileDataObject defined as:

public class Office
{
   public virtual string Name { get; set; }
   public virtual string Phone { get; set; }
   public virtual **FileDataObject** OfficePdf { get; set; }
}

public class FileDataObject
{
   public virtual int? Id { get; set; }
   public virtual ContentType ContentType {get;set;}
   public virtual string FilePath {get;set;}
}

with mappings defined as:

public class OfficeMap : ClassMap<Office>
{
   Map(x => x.Name).Not.Nullable();
   Map(x => x.Phone).Length(20);
   References<FileDataObject>(x => x.OfficePdf).Cascade.All().Column("OfficePdfId").Nullable().ForeignKey("FK_Office_FileDataObject");
}

public class FileDataObjectMap : ClassMap<FileDataObject>
{
   Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native();
   Map(x => x.ContentType);
   Map(x => x.FilePath);
}

For a single office, I need just one OfficePdf (FileDataObject), but it MAY BE NULL when no pdf is uploaded for a particular office. (so a 0..1 relationship)

Schema for above two is being generated correctly with开发者_如何学编程

Table:Office-Column:OfficePdfId ->mapping-> PK-Id of Table: FileDataObject.

Please note that I do not want Table: FileDataObject to have OfficeId column as FileDataObject is being used by some other entities as well.

Though FileDataObject is being saved correctly, the issue I am facing is -

When user updates an existing office pdf, I am confused whether to

first delete the existing FileDataObject and then create a new one or

Update the existing pdf will be a better choice.

Or is there any way FNH can take care of it?

Could you please guide.

Thank you!


Unless you have some specific requirement that will be met by deleting and re-creating, it's probably easiest to just update the existing one. You can make the decision to create or update in your Office class, since it's the owner of the FileDataObject

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜