|
I just can't the hashed content right here. So the first request is what's in StringBullder, and the 2nd request is what's was transmitted to the service
Now I can see there's a difference, but not sure if which direction to go.
I tried just getting the body and hashing, but was off.
This is what I hash against
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><q1:SendAndCommit xmlns:q1="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Request"><SendAndCommitSource href="#id1"/></q1:SendAndCommit><q2:Transaction id="id1" xsi:type="q2:Transaction" xmlns:q2="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes"><ExactID xsi:type="xsd:string">AH2824-05</ExactID><Password xsi:type="xsd:string">0g4tu7pj1hb88q5d8xa55dlhvhvwlm3r</Password><Transaction_Type xsi:type="xsd:string">00</Transaction_Type><DollarAmount xsi:type="xsd:string">99.20</DollarAmount><Card_Number xsi:type="xsd:string">4111111111111111</Card_Number><Expiry_Date xsi:type="xsd:string">1215</Expiry_Date><CardHoldersName xsi:type="xsd:string">Jim Kirker</CardHoldersName><CVDCode xsi:type="xsd:string">999</CVDCode><Reference_No xsi:type="xsd:string">CA-Test</Reference_No><Client_IP xsi:type="xsd:string">::1</Client_IP><Client_Email xsi:type="xsd:string">jkirkerx@gmail.com</Client_Email><Currency xsi:type="xsd:string">USD</Currency><Address href="#id2"/></q2:Transaction><q3:Address_Type id="id2" xsi:type="q3:Address_Type" xmlns:q3="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes"><Address1 xsi:type="xsd:string">18751 Park Haven Lane</Address1><Address2 xsi:type="xsd:string"></Address2><City xsi:type="xsd:string">Huntington Beach</City><State xsi:type="xsd:string">CA</State><Zip xsi:type="xsd:string">92648</Zip><CountryCode xsi:type="xsd:string">US</CountryCode></q3:Address_Type></s:Body></s:Envelope>
This is what's transmitted, using Fiddler Raw View
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo9SVGdFyrSRIggrGNQtX310AAAAAhRk+BZwrlEmerSG7e6xTXgkQ9xZ9IRxJmASnRkw2CLgACQAA</VsDebuggerCausalityData></s:Header><s:Body s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><q1:SendAndCommit xmlns:q1="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Request"><SendAndCommitSource href="#id1"/></q1:SendAndCommit><q2:Transaction id="id1" xsi:type="q2:Transaction" xmlns:q2="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes"><ExactID xsi:type="xsd:string">AH2824-05</ExactID><Password xsi:type="xsd:string">0g4tu7pj1hb88q5d8xa55dlhvhvwlm3r</Password><Transaction_Type xsi:type="xsd:string">00</Transaction_Type><DollarAmount xsi:type="xsd:string">99.20</DollarAmount><Card_Number xsi:type="xsd:string">4111111111111111</Card_Number><Expiry_Date xsi:type="xsd:string">1215</Expiry_Date><CardHoldersName xsi:type="xsd:string">Jim Kirker</CardHoldersName><CVDCode xsi:type="xsd:string">999</CVDCode><Reference_No xsi:type="xsd:string">CA-Test</Reference_No><Client_IP xsi:type="xsd:string">::1</Client_IP><Client_Email xsi:type="xsd:string">jkirkerx@gmail.com</Client_Email><Currency xsi:type="xsd:string">USD</Currency><Address href="#id2"/></q2:Transaction><q3:Address_Type id="id2" xsi:type="q3:Address_Type" xmlns:q3="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes"><Address1 xsi:type="xsd:string">18751 Park Haven Lane</Address1><Address2 xsi:type="xsd:string"/><City xsi:type="xsd:string">Huntington Beach</City><State xsi:type="xsd:string">CA</State><Zip xsi:type="xsd:string">92648</Zip><CountryCode xsi:type="xsd:string">US</CountryCode></q3:Address_Type></s:Body></s:Envelope>
Dim sb As StringBuilder = New StringBuilder
Dim xmlSettings As New XmlWriterSettings
xmlSettings.OmitXmlDeclaration = True
Dim xmlWriter As XmlWriter = xmlWriter.Create(sb, xmlSettings)
Dim writer As XmlDictionaryWriter = XmlDictionaryWriter.CreateDictionaryWriter(xmlWriter)
'Just grab the body of the request to generate the HMAC
msg.WriteStartEnvelope(writer) 'If i remark this out, I get just the body to hash against
msg.WriteStartBody(writer)
msg.WriteBodyContents(writer)
xmlWriter.WriteEndElement()
xmlWriter.WriteEndElement() 'If i remark this out, I get just the body to hash against
writer.Flush()
Dim body As String = sb.ToString.Replace(" />", "/>")
Dim xml_bytes() As Byte = encoder.GetBytes(body)
|
|
|
|
|
Hello !
I'm using vb.net and Entity framework 6.
I have a situation , when I have several SQL queries that are generated on runtime( different query's type : Delete or Update ) applied to different tables.
I know that I can execute them one by one with
Context.Database.ExecuteSqlCommand using multiple database hit.
Is there any way to execute them using one database hit ?
Thank you !
modified 28-Jun-15 2:05am.
|
|
|
|
|
Make sure that each SQL-statement is terminated by a semicolon. Concatenate them. Execute that batch statement with Context.Database.ExecuteSqlCommand(..).
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
Please can you explain your idea , with my below example :
For the moment I'm using this , but this need 2 database hit:
sql1="UPDATE MyTable1 SET Name = 'Test2' WHERE Id = 2"
sql2="Delete * from TB2 WHERE Id = 31"
context.Database.ExecuteSqlCommand(sql1)
context.Database.ExecuteSqlCommand(sql2)
Now , using your suggestion , I have this :
context.Database.ExecuteSqlCommand(sql1 & ";" & sql2)
But doesn't work.
|
|
|
|
|
Apparently EF doesn't support batching, I didn't expect that. You would need to use SqlCommand.ExecuteNonQuery(..)[^] with ADO.NET then instead.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
ok , but is there any way to extract the current connection string from DBcontext ?
modified 28-Jun-15 5:43am.
|
|
|
|
|
I don't know. But it should be rather easily accessible from the app.config.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
A little Google goes a long way:
string connStr = context.Database.Connection.ConnectionString;
Entity Framework does NOT support batching.
|
|
|
|
|
I've already tried this.
But I get an error : Invalid connection string"
|
|
|
|
|
Well, that's where you get it from. If you're using it incorrectly, I can't do anything about that.
|
|
|
|
|
You didn't test your DELETE command in SQL Manager did you?
Your DELETE command is bad. You don't put a "*" in it. It's just
DELETE FROM TB2 WHERE Id = 31
|
|
|
|
|
It's a typing mistake. I have the query exactly like your query.
But the last command with merged queries doesn't work.
|
|
|
|
|
Hello !
I'm using vb.net 2013 , sql server 2008R2 , Entity framework 6 with DBContext database first.
when the user delete an object on an entity , I want to create a kind of "recovery script" and save it to a file. If this script is called by the user , he should recreate the deleted object again.
There are 2 cases :
- The record has no childs
- The record has childs ( so the recovery script should recreate the childs too)
I don't know if this will be a sql script , because when thi script will be used , the "Deleted object" should be inserted on an entity , and after should be the user that should decide to save it or no on database. Also before this object be saved on database , some testing actions will be made ( the same actions with the case when a new record is created )
any idea how can I do this ?
Thank you !
|
|
|
|
|
Holy crap this is over complicating things.
You've already been told how to do this. Just add a field to the root object that you can delete as "Deleted". That's it. No complicated "scripting", validation, reinserting, recreating child objects, blah, blah, blah.
One very simple operation undeletes an object and doesn't bloat the crap out of your database with "scripts" to recreate anything.
|
|
|
|
|
I have done what you have suggested.
So if a user do a "Soft" delete , I set the column to "deleted".
But the user can delete these "soft deleted records" , and on this case the record is deleted from database.
For this case I want to save a "Recovery script" ( similar to windows recycle bin. when a file is deleted from recycle bin too , a recovery process should be made if necessary to recover this file. ).
|
|
|
|
|
satc wrote: similar to windows recycle bin That's the 'soft' delete flag being set. The hard delete is the same as when you empty the recycle bin, after which the file is really gone. However, if you want to recover them after that you just need to have another value that indicates hard delete.
|
|
|
|
|
What's happen if the files are deletes from "Recycle bin " ? The are gone ???!!! No. The can be recovered using Recovering software.
A similar behavior I want to do with records. When "a soft deleted record ") ( that has the "deleted" value=rue" ( is deleted , I want to have a way to recover. But keeping another field that indicate "hard" delete is not what I want. I want that a user to be able to really delete a record from database. And if he want he can recover ( just like on recycle bin for files.
|
|
|
|
|
satc wrote: The can be recovered using Recovering software. Those files can not always be recovered; the space is marked as available, and could be (partially) overwritten. Still, you are comparing apples and oranges - the recovery software does not use a script.
Your users simply should not have the right to delete anything if they cannot be trusted with a recycle bin.
satc wrote: And if he want he can recover just like on recycle bin for files. Then stop using a database completely and use the filesystem.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Quote: Then stop using a database completely and use the filesystem
Really ??
Please give me some idea how can I do this.
|
|
|
|
|
satc wrote: Please give me some idea how can I do this. A databases stores it data different than the filesystem. That is why no major database-vender has an "undelete" functionality. If you don't want to throw it away, then don't throw it away - it is that simple.
And yes, it is simply a datastore; you can save all your stuff in old-fashioned text-files on the filesystem. That WILL support recovering the file, but will only work with complete FILES, not with a record in that file.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Will the entity Framework work with this "New way of storing data" that you have suggested ???!!!
I think no.
So better to return to the original question.
I have an object in entity framework that I want to permanently delete from database.
Is there an general way to store on a text file a script or something else that will help user to recreate this record if necessary ? ( of course not a sql script because I have clarify this on my first post ).
|
|
|
|
|
Wrong. That's what a database backup is for.
No, you don't do this in your code either. This is an operation left up to the DBA.
|
|
|
|
|
I've made the backup yesterday.
Today at 10AM I create a record.
At 11AM I delete this record.
after 2 days , I need this record.
could you please explain to me how can I use the backup to restore this record.
Thank you !
|
|
|
|
|
You don't.
You restore the entire database. Backups are a snapshot in time.
|
|
|
|
|
Oh , please.
I'm not talking for restoring the whole backup.
Please read what I want to do.
anyway , even with a entire backup restore , the problem that I've described above will not be resolved.
|
|
|
|